분석 Python/Tensorflow(42)
-
[ Python ] Tensorflow max norm 적용하기
맥스 노름 규제 주기 각 가중치에 특정 threshold로 제한하는 방식 threshold를 1을 줘서 최대 노름이 1이 되도록 가중치를 clipping 하는 연산 수행 clip_by_value로 줄 수도 있지만, norm으로 주는 것도 좋음. 맥스 노름 규제 같은 경우에는 전체 손실 함수에 규제 손실 항을 추가할 필요 없음 그래도 훈련이 끝나고 clip_weghts를 실행시켜야 하므로 값을 얻어야 함. 그래서 훈련이 끝나고 실행시켜줘야함. def max_norm_regularizer(threshold, axes=1, name="max_norm",collection="max_norm"): def max_norm(weights): clipped = tf.clip_by_norm(weights, clip_no..
2019.09.28 -
[ Python ] TensorFlow Weight L2, L1 Normalization 쉽게하기
https://stackoverflow.com/questions/38286717/tensorflow-regularization-with-l2-loss-how-to-apply-to-all-weights-not-just TensorFlow - regularization with L2 loss, how to apply to all weights, not just last one? I am playing with a ANN which is part of Udacity DeepLearning course. I have an assignment which involves introducing generalization to the network with one hidden ReLU layer using L2 los..
2019.09.24 -
[ Python ] gumbel softmax 알아보기
도움이 되셨다면, 광고 한 번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 :) 예전에 gumbel softmax 관련 영상을 보고 관련된 자료도 찾아봤자만, 이해가 안 됐고 당시에 코드도 Tensorflow로 많이 없어서 포기했다가, 최근에 다시 봐야 할 것 같아서 여러 코드 구현물을 찾고 내용을 다시 이해해보려고 한다. 일반적으로 DNN을 학습시키는 것은 모델을 구성하고 Loss를 정의한 다음에 gradient에 따라 점진적인 학습을 한다. 그러나 때 때로 이것은 랜덤 구성요소를 규합시키는 아키텍처에서는 쉽지 않다. forwad pass는 더 이상 인풋과 가중치들의 deterministic function이 아니다. 랜덤 구성요소는 샘플링하는 수단으로 stochasticity를 도입한다. 샘플링한 것..
2019.09.14 -
[ Python ] TensorFlow 1.x save & load model & predict
최근에 Flask를 이용해서 모델을 load 하고 예측을 하려고 한다. 예측을 빠르게 하기 위해선 모델을 불러오고 모델의 결괏값만 불러오게 해야 하는데 여기선 모델의 아키텍처와 가중치를 저장을 해서 인풋만 넣어도 예측하게 하는 과정을 해보려고 한다. 일단 모델을 하나 만든다. 여기선 간단하게 binary class를 해본다. 여기서 만들 때 가중 중요하게 생각한 것은 name을 지정해야 합니다! 그래야 나중에 모델만 불러와서 사용할 수 있는 것 같습니다. 만든 후에 각 지정한 이름을 확인하고 싶은 경우 save_file = "./savemodel/.meta" saver = tf.train.import_meta_graph(save_file) saver.restore(sess, tf.train.latest_..
2019.08.17 -
tensorflow 논문 구현 코드가 많이 있는 Github 공유
https://github.com/tensorflow/tensor2tensor/blob/master/tensor2tensor/layers/common_layers.py tensorflow/tensor2tensor Library of deep learning models and datasets designed to make deep learning more accessible and accelerate ML research. - tensorflow/tensor2tensor github.com https://towardsdatascience.com/extending-pytorch-with-custom-activation-functions-2d8b065ef2fa Extending PyTorch with Cus..
2019.06.30 -
tf.contrib.learn.DNNRegressor 활용한 모델링하기
이번 편은 Regression 방법으로 하기, 개인적으로 Regression이 훨씬 잘 될 줄 알았는데, 다른 모델과 비교했을 때 그렇게 잘되지는 않았음. boston = datasets.load_boston() X_train, X_test, y_train, y_test = train_test_split( boston.data, boston.target, test_size=0.4, random_state=0) X_train.shape, y_train.shape , X_test.shape, y_test.shape ## ((303, 13), (303,), (203, 13), (203,)) import os import warnings import tensorflow as tf warnings.filterwa..
2019.06.16 -
tf.contrib.learn.DNNClassifer 활용한 모델링하기
일단은 Numeric 버전만 진행을 하려고 한다. 추후에 wide-deep 이든 embedding 해서 하는 것을 해보겠다. 여기서 tf.data를 적용하려고 했는데, 계속 안되서 포기하고 그냥 해보기! import numpy as np from sklearn.model_selection import train_test_split from sklearn import datasets cancer = datasets.load_breast_cancer() cancer.data.shape, cancer.target.shape ## stratifed를 제공했었다! X_train, X_test, y_train, y_test = train_test_split( cancer.data, cancer.target, tes..
2019.06.16 -
tf.Data를 활용하여 csv 파일부터 읽어서 텐서플로우 모델링하기
보통 데이터가 클 경우에 읽는 것도 버거울 경우가 있다. 아마 내가 여기서 기대하는 것은 읽을 때도 batch 단위로 읽어서 메모리를 다 안 쓰는? 실제로 그렇게 돌아가는지는 모르겠다. 암튼 csv 에서 자체적으로 feature를 쪼개서 학습을 시킬 때 어떻게 해야 하나 고민하다가 방법을 찾아서 공유한다. 물론 그리고 바로 모델링도 쉽게 하는 방법까지 해보겠다. 아직 해결해야할 점은 Pipeline에서 전처리도 안에서 어떻게 해야 할지다! 여기서 의문인 점은 batch 단위로 전처리를 하게 되는지 그런 것들이 좀 궁금하다. 큰 데이터에서 어떻게 전처리를 해야 효과적으로 할 수 있는지.... 아무튼 여기선 csv -> 바로 feature와 target으로 나눠서 모델링하는 것으로! import tensor..
2019.06.16 -
Activation (SQNL , Soft Cliping , Gaussian)
Activations 중에서 보통 Relu 계열들이 잘 되기 때문에 그 부분에 대해서 많이 발전을 한 것 같다. 하지만 나는 생성 모델에 관심을 가지고 있다 보니, Scaling을 특정 구간에 가두는 그런 함수들이 필요한데 그 예로는 tanh(-1, 1)와 sigmoid(0 , 1) 같은 함수가 있다. 하지만 이 함수들은 미분한 것을 이용하다보면 많은 한계가 있다는 것을 알 수 있다. 이런 것들을 사용하면 Gradient Update 하는 방식으로 하는 것에서 큰 문제가 생긴다. Layer를 깊게 쌓을 수록 Activation의 영향력이 점점 줄어든다는 단점이 분명히 존재한다. 이러한 것을 해결하기 위해 찾은 것들이 Square Nonlinearity (SQNL) ( -1 , 1) 과 Soft Clipi..
2019.06.09 -
[Tensorflow] Cyclical Learning Rate
먼가 지금 학습을 시키는 것이 있는데, 먼가 추가적으로 데이터를 넣으면서 시키는 중이다. 그런데 현재 구조는 learning deacy 방식으로 사용하다 보니, 점점 학습률은 떨어져서 새로운 데이터에 대해서 그만큼 새로운 최적의 값을 못찾는 기분이라서, learning rate를 어떻게 해봐야겠다고 생각을 하고 다음과 같이 수정을 해보려고 한다! 그래서 알아본게 Cyclical로 주기를 만드는 방식이다. 이러면 잘 되겠지 하고 기대를 하면서!!!!!!!!!! cyclic_learning_rate( global_step, ## Epoch 의미 learning_rate=0.01, max_lr=0.1, ## 최대 learning rate step_size=20., gamma=0.99994, ## 폭? 작게 할..
2019.06.05 -
tensorflow mask 씌우기
오늘은 결과물에서 특정 부분에 대해서 mask를 씌울 일이 있어서, 인터넷에 찾아봐도 잘 나오지 않아서 stackoverflow에 물어보니 답이 나와서 정리해서 코드를 보여주려고 한다. mask를 씌우는 이유는 머랄까 maxpooling처럼 실제로 쓰는 부분에 대해서만 Gradient를 주고 싶어서 하려고 한다. 물론 아예안하고 할 수도 있는데 왜 굳이 mask를 씌우냐고 할 수 있지만, 실제 자료가 [10000 , 10]이런 거여서 여러 가지 shape 바꿔주고 해서 [10000, 3, 4, 1]로 바꾸려고 한다. 그러다 보니 2개 정도 마스크를 씌워야 했다. G = generator(Z) ## [ None , 3, 4, 1] masking = tf.sequence_mask([4, 4, 2], maxl..
2019.05.30 -
tensorflow 폴더 생성 및 지우기
if tf.gfile.Exists(model_dir): tf.gfile.DeleteRecursively(model_dir) tf.gfile.MakeDirs(model_dir) tf.gfile.MakeDirs(model_dir + "/save_model") tf.gfile.MakeDirs(vis_dir) tf.gfile.MakeDirs(board_dir) else : tf.gfile.MakeDirs(model_dir) tf.gfile.MakeDirs(model_dir + "/save_model") tf.gfile.MakeDirs(vis_dir) tf.gfile.MakeDirs(board_dir)
2019.05.28