[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行,
再次重复“未知错误”。

我想要的是带有来自神经网络预测输出的输出的标签。 (代码中的打印行。)

不幸的是,到目前为止,我还没有发现任何可用于各种互联网搜索的内容,但是我觉得让它起作用并不难。
先感谢您。

最佳答案

如果查看模型输出检查点(/ 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')可以解决问题。

关于python - 如何应用训练有素的神经网络?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56383676/

10-16 08:17