데이터분석/Tensorflow

[Tensorflow] Overfitting 해결방법

쌍쌍바나나 2017. 2. 7. 21:42
반응형

  네트워크를 구성하고, 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/

반응형