네트워크를 구성하고, training을 하는데, accuracy와 cross-entropy의 그래프에서 training, validation의 값이 차이가 나는게 보였다. 빨간색이 training, 파란색이 validation이다. training의 acc의 값은 증가하고, cross-entropy의 값은 계속 줄어드는데 반면, validation의 값은 반대로 유지가 되거나, 반대로 증감하는 그래프를 확인할 수 있었다. 즉 현재 네트워크는 overfitting 되었다고 말할 수 있다.
Dropout
tensorflow에서는 fully connected layer를 일정 노드를 dropout을 함으로써,
overfitting문제를 해결한다.
input으로는 neuron’s을 유지할 probability를 입력해주면 간단하게 구현이 가능하다.
모든 구현은 tf.nn.dropout op가 자동적으로 scaling neuron ouptuts을 해준다.
keep_proba = tf.placeholder(tf.float32)
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)
Readout Layer
softmax regression 바로 위의 layer인 readout layer에 추가를 하면된다.
W_fc2 = weight_variable([1024, 10])
b_fc2 = bias_variable([10])
y_conv = tf.matmul(h_fc1_drop, W_fc2) + b_fc2
Train and Evaluate the model
run()할때, feed_dict에 keep_prob을 추가하면 된다.
[참고]
https://www.tensorflow.org/tutorials/mnist/pros/
'데이터분석 > Tensorflow' 카테고리의 다른 글
[Tensorflow] tensorflow 기본 설명 (tensor, variables, fetches, feeds, session, etc) (0) | 2017.02.07 |
---|---|
[Tensorflow] How to Retrain Inception’s Final Layer for New Categories (0) | 2017.02.07 |
[Tensorflow] CNN (Convolutional Neural Networks): cifar-10 (0) | 2017.02.07 |
[Tensorflow] 설치 및 환경 구축하기 (0) | 2017.02.07 |