[텐서플로우] dropout의 적용
드롭아웃 기법 : 신경망의 일부만 사용하도록 하여 가중치의 균형을 잡고 과적합 상태를 해결함.
keep_prob = tf.placeholder(tf.float32) W1 = tf.Variable(tf.random_normal([784, 256], stddev=0.01)) L1 = tf.nn.relu(tf.matmul(X, W1)) L1 = tf.nn.dropout(L1, keep_prob) W2 = tf.Variable(tf.random_normal([256, 256], stddev=0.01)) L2 = tf.nn.relu(tf.matmul(L1, W2)) L2 = tf.nn.dropout(L2, keep_prob) W3 = tf.Variable(tf.random_normal([256, 10], stddev=0.01)) model = tf.matmul(L2, W3) # 출력층에는 활성화 함수 사용하지 않음. _, cost_val = sess.run([optimizer, cost], feed_dict={X:batch_xs, Y: batch_ys, keep_prob: 0.8}) # 뉴런의 80%만 사용 #예측시에는 dropout을 적용하지 아니한다. print('정확도:', sess.run(accuracy, feed_dict={X: mnist.test.images, Y: mnist.test.labels, keep_prob: 1}))
최근 댓글