[Python 3.7,Tensorflow]我已经训练了一个神经网络。一切正常,它可以学习,但是一旦完成学习,它就会关闭并失去进度。现在,我要做的就是输入新数据,然后手工查看网络的性能。
我已经摆弄了
saver = tf.train.Saver()
saver.save(sess, 'model/model.ckpt')
但这总是导致一英里长的错误报告,结尾是“未知错误:无法重命名'model / model.ckpt'”等。
上下文中的代码如下:
def train_neural_network(x):
training_data = generate_training_data() # i cut getting training data since its a bit out of context here, but its basically like mnist data
prediction = neural_network_model(x) # normal, 3-layer feed forward NN
cost = tf.reduce_mean( tf.square(prediction - y) )
optimizer = tf.train.AdamOptimizer(0.01).minimize(cost)
hm_epochs = 10
saver = tf.train.Saver()
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch in range(hm_epochs+1):
epoch_loss = 0
for i in range(10):
epoch_x, epoch_y = training_data
_, c = sess.run([optimizer, cost], feed_dict = {x: epoch_x, y: epoch_y})
saver.save(sess, 'model/model.ckpt')
我尝试将这个训练有素的神经网络称为main:
train_neural_network(x)
X, Y = generate_training_data()
prediction = neural_network_model(x)
saver = tf.train.Saver()
with tf.Session() as sess:
saver.restore(sess, 'model/model.ckpt')
result = sess.run(prediction, feed_dict={x: X})
print(Y, result)
到目前为止,所有内容都在一个文件中,但是我也可以处理两个单独的文件。
这将导致错误,该错误表示通常的python错误,包含路径并以
结尾
“ ...在_do_call中
提高类型(e)(node_def,op,消息)”
在我看来,Tensorflow特定的错误出现之前:
“未知错误:无法重命名'model / model.ckpt'”
和
“由op'save_13 / SaveV2'引起,定义于:”,
然后有一条很长的路,大约87行,
再次重复“未知错误”。
我想要的是带有神经网络预测输出的输出标签。 (代码中的打印行。)
不幸的是,到目前为止,我还没有发现任何可用于各种互联网搜索的内容,但是我觉得让它起作用并不难。 预先谢谢你。
答案 0 :(得分:1)
如果查看模型输出检查点(/ model)的文件夹,则每个保存应该看到3个单独的文件:model.ckpt-xxx.data,model.ckpt-xxx.index和model。 ckpt-xxx.meta,其中xxx是Tensorflow附加的检查点的ID。
当您要还原某个检查点时,还必须添加ID,因为通常在训练过程中会创建同一网络的多个检查点,以便我们以后可以根据需要重新训练网络。
所以我要看一下模型文件夹并仔细检查文件名,我猜是
如果您仅创建一个检查点,saver.restore(sess, 'model/model.ckpt-0')
就能解决问题。