我按照书本上MNIST识别的过程把代码撸了一遍,按照他给的代码,每进行一千次迭代,使用验证集进行一次验证。但是我感觉这样的话那一次的验证应该也会改变网络的权。我查网上的资料验证集应该不参与训练才对,请问如何在训练过程中,验证时不改变网络的权值?。万分感谢!!!
with tf.Session() as sess:
tf.global_variables_initializer().run()
validate_feed = {x: mnist.validation.images, y_: mnist.validation.labels}
test_feed = {x: mnist.test.images, y_: mnist.test.labels}
for i in range(max_steps): #总迭代次数
if i % 1000 == 0: #每1000次迭代使用验证集进行验证
validate_accuracy = sess.run(accuracy, feed_dict=validate_feed)
print(validate_accuracy)
xs, ys = mnist.train.next_batch(batch_size=100)
sess.run(train_op, feed_dict={x: xs, y_: ys})
test_accuracy = sess.run(accuracy, feed_dict=test_feed)
print(test_accuracy)
代码如上,是不是每进行一次验证的时候,他的权值都会发生改变?怎么让它不发生变化呢
我觉得可以设置一个is_training参数,走到self.logits那里就直接return,要再走train跟新了。具体可以参考文本分类github项目
https://github.com/brightmart/text_classification
不会吧,只有sess.run(trainop)才会变化吧
训练10000次之后才代入的一次验证集验证...,不是1000