분석 Python/Tensorflow(42)
-
[ Tensorflow ] AUC 구하기
광고 한 번씩 눌러주세요. 블로그 운영에 큰 힘이 됩니다 :) import tensorflow as tf import numpy as np a= np.random.uniform(size=(10,2)) prob = a / np.expand_dims(np.sum(a,axis =1 ),axis =1) prob target = np.random.randint(low=0, high =2 , size=10) target = np.argmax(prob , axis = 1) probs = tf.constant(prob) labels = tf.constant(target) proba = tf.slice(probs,[0,1],[-1,1]) auc_value , update_auc = tf.metrics.auc(tf.res..
2020.02.21 -
Tensorflow Version 1 tune 간단 예제
광고 한 번만 눌러주세요 블로그 운영에 큰 힘이 됩니다! :) 최근에 optuna를 쓰다가 먼가 cpu를 잘 안 쓰는 것 같아서 다른 것을 고민하다가 tune을 발견했다. https://towardsdatascience.com/fast-hyperparameter-tuning-at-scale-d428223b081c Tune: a Python library for fast hyperparameter tuning at any scale How do you tune hyperparameters with thousands of cores in just 18 lines of code? towardsdatascience.com 일단 표 자체에서는 search algorithms 과 fault tolerance 차이밖..
2020.02.02 -
Tensorflow Projector 사용하기
word2 vec을 들어본 사람이라면 아래 그림과 같은 예제를 많이 보게 될 것이다. word2 vec을 사용하면 단어를 특정 공간에 투영시켜놓는다 그리고 이게 잘 학습이 된다면 단어들이 의미 있는 공간에 투영되게 된다. 그래서 아래 그림에서 보면 성별을 기준으로 같은 방향으로 움직이면 다른 성별에 관련된 단어와 연관이 있다는 것을 알 수 있게 된다. 이런 식으로 sparse representation(one-hot)에서 dense representation(distributed representation)으로 변하게 할 수 있다. 이렇게 하면 기존의 n 차원에서 더 작은 m 차원으로 줄여줄 수가 있게 돼서 차원의 저주라는 문제에 대해서 어느 정도 해소시켜줄 수 있다. 그뿐만 아니라 일반화 능력도 가질 ..
2020.01.26 -
[ Python ] tensorflow에서 결측치(na)를 특정값으로 대체하기
보통 데이터에는 결측치가 존재한다. 이러한 결측을 처리하는 데에 있어서 보통은 먼저 결측을 처리하고 들어간다. 만약 이러한 값에 대해서 tensorflow에서 처리를 하려면 다음과 같이하면 된다. 하지만 이 방법은 특정값으로 대체만 가능하다. matrix마다 다르게 결측 값을 넣는 것은 좀 더 알아봐야 할 것 같지만, numpy나 pandas를 쓰는 게 더 편하긴 할 것 같다. import os , numpy as np import tensorflow as tf data = np.random.normal( size= (5,2)) missingidx = np.random.randint(0,2, size=(5,2)) data[missingidx == 1] = np.nan 위에 처럼 결측이 저렇게 있는 데이터..
2020.01.12 -
tf.scan, tf.less , tf.assign , projector, tf.dtypes
## tensorflow InteractiveSession , get_shape, expand_dims, linspace import tensorflow as tf sess = tf.InteractiveSession() c = tf.linspace(0.0 ,4.0, 5) print(c.get_shape()) d = tf.expand_dims(c, 1) print(d.get_shape()) print(c.eval()) sess.close() tf.Graph , dtype with tf.Graph().as_default() : c1 = tf.constant(4, dtype=tf.float32 , name= "float") c2 = tf.constant(4, dtype=tf.float64 , name= "fl..
2020.01.05 -
Tensorflow 1.x Tabular Data Neural Network Modeling
도움이 되셨다면 광고 한번만 눌러주세요! 블로그 운영에 큰 힘이 됩니다! : ) tabular data에 tensor flow 적용하기. 코드에서 눈여겨 봐야할 점 missing value mean 처리 selu activation + alpha dropout boosting algorithm idea 비슷하게 흉내내기(틀린 것을 더 학습시키는 구조) Weighted Cross-Entropy (compute class weight) Weight L2 Regularization category 데이터를 onehot을 하지 않고 label encoding 한 후 embedding 또는 onehot으로 처리함. label smoothing 적용 alpha = 0.95 y_one_hot = tf.add(alph..
2020.01.04 -
Tensorflow Adanet Tabular Data 적용해보기
https://medium.com/neuronio/introduction-to-adanet-c01fad8b084 Introduction to AdaNet AdaNet (Adaptive Structural Learning of Artificial Neural Networks) was announced by Google in its blog as a new AutoML framework. It is… medium.com AdaNet은 앙상블 개념을 사용한다. 마지막 모델은 위의 그럼처럼 단순한 것들의 결합으로 이루어진다. 대단한 점은 이러한 것을 앙상블을 만들기 위해 각 iteration에서 후보 네트워크의 세트를 체크하고 더 작게 만드는 loss를 찾게 되면 앙상블에 더하는 구조를 만들어 준다는 것이다. ..
2019.12.29 -
remote server 로부터 Tensorboard 사용하는 방법
Tensor flow 같은 딥러닝 프레임워크를 개인 노트북에서 돌리기 어려워서 remote server에 ssh 통신을 통해 작업을 하는 분들이 많을 것이다. 필자도 보통 노트북에 있는 코어나 GPU를 사용하지 않고 remote server에 접속하여 사용한다. Tensor flow를 사용하다 보면 Tensorboard를 많이 사용하는데, 이것이 보통 개인 노트북에서 킬 때는 localhost:6006 이런 식으로 키면 잘 돌아가지만, 원격에서 작업한 것을 개인 노트북에서 킬 때 localhost:6006을 해도 안될 것이다. 그래서 좀 찾아본 몇가지 글에서 답이 있어서 공유하고자 한다. Tensorboard 기본적인 default port는 6006이지만, 저런 원격 서버 같은 경우 여러 명이 공유해서..
2019.12.28 -
[ Tensorflow ] Binary, MutliClass Loss
코딩을 하다 보니 Loss를 사용하는 데 있어서 헷갈리는 부분이 있어서 따로 정리를 하고 싶어 짐! 코드는 주로 사용하는 Tensorflow 1.4 위주로... Tensorflow 2.0 은 추후에... Binary CrossEntropy & Weight Cross Entropy one_hot = (?,1) logits = (?,1) weight = tf.constant( [2.0] ) ## Wegith CrossEntropy WCE = tf.nn.weighted_cross_entropy_with_logits( targets = one_hot , logits = logits , pos_weight = weight) ## CrossEntropy CE = tf.nn.sigmoid_cross_entropy_w..
2019.11.09 -
TensorFlow 유용한 구현 모음 (아직 테스트는 안해봄)
def weight_norm(x, output_dim) : input_dim = int(x.get_shape()[-1]) g = tf.get_variable('g_scalar', shape=[output_dim], dtype=tf.float32, initializer=tf.ones_initializer()) w = tf.get_variable('weight', shape=[input_dim, output_dim], dtype=tf.float32, initializer=he_init) w_init = tf.nn.l2_normalize(w, dim=0) * g # SAME dim=1 return tf.variables_initializer(w_init) weight_init = tf.random_normal..
2019.10.27 -
TensorFlow gpu cuda 설치 공식 문서 (Windows / Ubuntu 16.04 ,18.04)
Ubuntu 16.04 (CUDA 10) # Add NVIDIA package repositories # Add HTTPS support for apt-key sudo apt-get install gnupg-curl wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_10.0.130-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1604_10.0.130-1_amd64.deb sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x8..
2019.10.03 -
tensorflow에서 Loss 가 nan 발생한 경우 정리 (개인 생각)
여러 가지 경우의 수가 있지만 정리 1. 가중치 초기값을 selu이고, lecun uniform / lecun normal 줬을 때 ====> 더 좋다고 알려진 glorot uniform / glorot normal로 수정함. ---> 실제로 바꾸고 나서 효과를 본 것 같기도 함 2. Loss 부분에 tf.reduce_sum을 했을 때 문제 발생하는 것 같음. ====> 그래서 tf.clip_by_value를 줘서 0 이상으로 주니 에러가 안 생김 3. tf.nn.loss 가 nan 발생하는 경우가 자주 있음 https://data-newbie.tistory.com/270 TensorFlow L2 Normalization 쉽게하기 https://stackoverflow.com/questions/38286..
2019.09.28