본문 바로가기

머신러닝 & 텐서플로 & 파이썬

(22)
Tensorflow training을 save하고 restore하는 방법 training modeling 을 저장했다가 다시 불러서 사용하게 되면,처음부터 training을 할 필요가 없어져서 매우 유용합니다. 그 방법 역시 매우 간단한데요. 아래 예제가 있습니다.한번 활용해보세요. optimizer = tf.train.AdamOptimizer(learning_rate)train = optimizer.minimize(cost) saver = tf.train.Saver()sess = tf.Session()sess.run(tf.global_variables_initializer()) # training 을 저장할 file 명mytrain= "./mytain.ckpt" if os.path.exists(mytrain+".meta"):# 파일에서 loading saver.restore..
Matplotlib 사용하기 ML/DEEP LEARNING 등을 스터디하다보면,그래프를 통해서 결과를 확인해야 할 때가 많습니다. 이때 사용할 수 있는 matplotlib 을 소개하고자합니다. https://matplotlib.org python 에서 matplotlib을 사용하는 방법은 간단합니다.아래 예제코드를 준비 했습니다.import matplotlib.pyplot as plt plt.figure()plt.plot([1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,0])plt.show() print("hello") cnn test 를 위해 작성한 코드 import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt sess = tf.Interact..
adam and gradient descent optimizer 텐서플로우에서 옵티마징은 보통 예제에는, gradient decent 알고리즘을 사용하는데, CNN , NN 등에서는 AdamOptimizer를 권장하는군요. 옵티마이징 그래프를 확인해보면, 확실히 성능이 더 좋아 보입니다. gradient descent : tf.train.GradientDecscentOptimizerAdam : tf.train.AdamOptimizer
Softmax softmax 는 multinomial classificatioin 즉, 2개 이상의 data 그룹을 나누기 위한 모델입니다.
drop out 과 앙상블(ensemble) drop out NN 에서 drop out 기법은 여러 입력 변수들 중에서 일부 뉴런들을 disable 시키고 나머지 내용들로 학습시킵니다. 주의점 : 학습할때만 dropout 시킴!!!! 방법 dropout_rate = tf.placeholer("float")_L1 = tf.nn.relu(tf.add(tf.matmul(X,W1), B1))L1 = tf.nn.dropout(_L1, dropout_rate) TRAIN: sess.run(optimizer, feed_dict={X:batch_xs, Y: batch_ys, dropout_rate:0.7}) EVALUATION: print "Accuracy:", accuracy.eval({X: mnist.test.images, Y:mnist.test.labels..
초기값 머신러닝에서 초기 weight 값은 매우 중요합니다.딥러닝 알고리즘들이 발표되고 나서 오랜 기간동안 학습 효율이 안나와서 외면받아왔었습니다.이렇게 효율이 안나오게 된 이유중 하나가 이 초기 값의 잘못된 설정 때문이었습니다. 그후 여러가지 방식으로 초기값을 결정하려고 하는 노력들이 있었습니다. Not all 0's절대로 모든 값을 0을 주면 안된다. RBM - restriced boltzmann machine입력 값을 줘서 출력을 만들고 , 출력 레이어에서 입력 레이어 쪽으로 반대로 전달한다.이렇게 했을때 초기 입력 값과 출력에서 보내서 입력 레이어를 거치고 나온 값이 유사하도록 W값을 조정한다. PRE-TRAININGRBM 을 각 레이어별로 계산함.. - 좋은 방식임 -- 그러나 복잡함. --------..
Sigmoid , ReLU Sigmoid 함수는 주어진 값을 0~1사이의 값으로 변환 시켜주는 함수입니다. 머신러닝에서 많이 사용하는 함수입니다. 값이 커지거나 작아지거나 할때 가중치가 너무 무리하게 커지는 것을 방지 하기 위한 용도로 사용합니다. sigmoid 함수 : 입력-- 입력 레이어 -- 히든 레이어 1---- 히든 레이어 2 ------- 히든 레이어 N -- 출력 레이어 -- 출력 레이어 x = ax*b x' = sigmoid(x) 0
tensorboard: 학습 모니터 텐서플로우의 학습 내용을 로그를 통해서 확인하는 것 보다는 그래프와 같은 비쥬얼 툴을 이용해서 확인하는 것이 훨씬 더 효과적일 것입니다. 텐서보드(TensorBoard) 가 이런 면에서는 매우 유용한 툴 입니다. 학습과정에서 모니터링 하고 싶은 값들, 입력, 또는 출력, 등등... 을 그래프로 볼수 있도록 도와주는 툴입니다. 또 텐서플로우 내의 노드들, 텐서들의 graph 들도 GUI적으로 구성해서 볼 수 있습니다. writer = tf.summary.FileWriter("./logs/xor_logs") [터미널]$ tensorboard -logdir = ./logs/xor_logs 리모트 서버에서 텐서플로우를 돌리고 모니터링 할 경우에 텐서보드의 결과를 서버에 접속해서 볼 수 도 있습니다. ssh -L..