우리는 이제 기본적인 network를 구성할 수 있다. 지금까지 했던 network는 forward또는 fully connected network라고 한다. 이런 형태 말고도 입력을 여러개로 나누고 이것을 하나로 합쳐 결과를 내는 방식이 있는데 convnet의 기본적인 아이디어이다. Convolutional Neural Networks convnet의 기본적인 아이디어는 고양이 실험에서 시작되었다. 고양이에게 어떤 형태의 그림을 보여줬더니, 그림을 읽어들이는 뉴런들이 동시에 동작하는게 아니라 그림의 부분마다 다른 뉴런들이 활성화 된다는 것을 알게 되었다. 하나의 이미지가 있으면 그 이미지를 잘라내어 각각의 입력으로 넘기게 되는데 이 층을 convolutional layer라고 한다. 그래서 이 netwo..
딥러닝으로 MNIST 98%이상 해보기¶ 이번 시간은 neural net을 사용할 때 유용한 팁에 대해서 알아보겠다.¶ MNIST Softmax!¶ In [1]: # Lab 7 Learning rate and Evaluation import tensorflow as tf import random # import matplotlib.pyplot as plt from tensorflow.examples.tutorials.mnist import input_data tf.set_random_seed(777) # reproducibility mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) # Check out https://www.tensorflow..
Overfitting이 되었는지 안되었는지 어떻게 알 수 있을까? 학습데이터를 가지고 accuracy를 측정해봤더니 높은 확률이 나왔는데, 한번도 보지 못한 데이터에 대해서 정확도가 오히려 떨어질때. Solutions for overfitting 1. 학습 데이터를 더 많이 모을것 2. regularization : 12reg = 0.001 * tf.reduce_sum(tf.square(W)) 3. Dropout (Neural Network에서의 simple한 방법, 2014) Neural Network에서 우리가 엮어놨는데, 임의로 끊어버리고 몇개의 node를 drop시키는 방법이다. 이게 왜 될까? 훈련할 때 몇 명은 쉬게 해놓고 남은 사람을 가지고 훈련시킨다. 그 다음 훈련에서도 랜덤하게 몇 명을 ..
Vanishing Gradient 문제 해결 방법 1. LeLU 2. 초기값을 잘 줘야 한다. 같은 LeLU를 줘도 초기값에 따라 다음과 같은 차이가 생기기도 한다. 초기값(w)을 모두 0으로 줘보자. 어떤 문제가 발생할까? x를 가지고 f를 구한다음 다시 propagation을 이용해 역으로 구하는데 x의 미분값이 0이면 앞에 있는 모든 미분값이 0이 되어버린다. 초기값을 매우 현명하게 줘야만 한다. 1. 초기값을 모두 0을 주면 안된다. (학습 전혀안됨) 2. 2006년 'A Fast Learning Algorithm for Deep Belief Nets" by Hinton 에서 어떻게 초기화 시키는 것이 좋은지 방법을 제시. - Restricted Boatman Machine (RBM) 지금은 사용..
XSigmoid 보다 ReLU가 더 좋아¶ 복습¶ In [1]: from PIL import Image Image.open('xor.png') Out[1]: Activation function¶ 값이 전달될 때 어느정도 이상이 되면 활성화 되고, 자극이 적으면 활성화 되지 않는 함수 In [ ]: W1 = tf.Variable(tf.random_uniform([2,2], -1.0, 1.0)) W2 = tf.Variable(tf.random_uniform([2,1], -1.0, 1.0)) b1 = tf.Variable(tf.zeros([2]), name='Bias1') b2 = tf.Variable(tf.zeros([1]), name='Bias2') # Our hypothesis L2 = tf.sigmoi..
Tensor Board로 딥네트웍 들여다보기¶ In [1]: from PIL import Image Image.open('board.png') Out[1]: 그래프가 복잡하고 wide하고 deep할 때 모양을 확인할 수 있다.(Visualize you TF graph) 어떤 값들의 그림을 바로 그려줄 수 있다. (Plot quantitative metircs) show additional data 숫자로 출력되니 너무 복잡해서 확인하기가 너무 어려워!!!¶ In [2]: Image.open('old.png') Out[2]: TensorBoard를 사용하기 위한 5가지 스텝¶ 1. From TF graph, decide which tensors you want to log¶ w2_hist = tf.summ..
XOR을 위한 텐서플로우 딥네트웍¶ In [1]: from PIL import Image Image.open('XOR.png') Out[1]: In [2]: import tensorflow as tf import numpy as np In [3]: x_data = np.array([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=np.float32) y_data = np.array([[0], [1], [1], [0]], dtype=np.float32) 결과값이 bianry한 0또는 1의 값을 갖기 때문에 logistic regression을 사용하면 된다. In [ ]: X = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32) W..