gpt4 book ai didi

python - 经过训练的神经网络使用相同的数据产生不同的预测(TensorFlow)

转载 作者:行者123 更新时间:2023-11-30 09:17:41 25 4
gpt4 key购买 nike

我已经使用 TensorFlow 训练了一个神经网络。训练结束后,我保存了它并在新的'. py' 文件以避免意外重新训练。当我用一些额外的数据测试它时,我发现它对相同的数据预测不同的事情。理论上它不应该对相同的数据计算相同的结果吗?

一些信息前馈网络
4 个隐藏层,每个隐藏层有 900 个神经元
5000 个训练周期
准确率达到 ~80%
使用 sklearn 的标准化对数据进行标准化。预处理
成本函数:tensorflow.nn.softmax_cross_entropy_with_logits
优化器:tf.train.AdamOptimizer
我将数据作为矩阵提供给我的网络,就像我用于训练的方式一样。 (每行包含一个数据样本,具有与输入神经元一样多的列)

在使用相同数据的 10 个预测周期中,我的网络至少在 2 个周期中产生不同的结果(到目前为止最多观察到 4 个)怎么会这样。从理论上讲,发生的所有事情都是 W_i*x_i + b_i 形式的数据处理计算。由于我的 x_i、W_i 和 b_i 不再改变,为什么预测会发生变化?模型重新加载例程可能有错误吗?

with tf.Session() as sess:  
saver = tf.train.import_meta_graph('path to .meta')
saver.restore(sess, tf.train.latest_checkpoint('path to checkpoints'))
result = (sess.run(tf.argmax(prediction.eval(feed_dict=x:input_data}),1)))
print(result)

最佳答案

所以这是我犯的一个非常愚蠢的错误。现在它可以很好地从保存中加载模型。该问题是由全局变量初始值设定项引起的。如果你把它省略掉,它会工作得很好。之前找到的信息可能对某人有用,所以我将其留在这里。现在的解决方案是:

saver = tf.train.Saver()
with tf.Session() as sess:
saver.restore(sess, 'path to your saved file C:x/y/z/model/model.ckpt')

此后您可以像往常一样继续。我真的不知道为什么变量初始化程序会阻止它工作。在我看来,它应该是这样的:初始化所有变量以存在并使用随机值,然后到达保存的文件并使用那里的值,但显然会发生其他事情......

关于python - 经过训练的神经网络使用相同的数据产生不同的预测(TensorFlow),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50706680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com