我正在尝试运行训练有素的Tensorflow模型。但是训练模型在相同的输入下给出了不同的结果。
我尝试了几个关于模型的测试
这两个案例给了我相同的结果 但是下一个案例会给我不同的结果
1和3的结果相同,2和4的结果相同
下一行是关于此问题的代码 Nxtest是xtest的归一化值
Training.py
result1 = sess.run(Out, feed_dict={X: NXtest})
result2 = sess.run(Out, feed_dict={X: NXtest[0:2,:]})
Restore.py
result3 = sess.run(Out, feed_dict={X: NXtest})
result4 = sess.run(Out, feed_dict={X: NXtest[0:2,:]})
result1和result3
[[ 1.8736366 , 2.02535582, 19.39698982],
[ 2.67727947, 0.9930172 , 16.15852356],
[ 0.90145612, 1.97343755, 14.90865993],
[ 1.78041267, 6.17082882, 18.19297409],
[ 4.76018906, 3.00801134, 9.77826309],...]
result2和result4
[[5.20546 7.42051 8.2718],
[4.59359 3.55607 20.086]]
为什么他们给我不同的结果?
答案 0 :(得分:0)
我发现了什么问题......
问题是图层规范化。
我使用下面的代码进行培训
# Layer 1
HL1 = tf.add(tf.matmul(X, w1), b1)
# Layer Normalize
mean1, var1 = tf.nn.moments(HL1,[0])
HL1_hat = (HL1 - mean1) / tf.sqrt(var1 + epsilon)
scale1 = tf.Variable(tf.ones([n_hidden1]))
beta1 = tf.Variable(tf.zeros([n_hidden1]))
NL1=scale1 * HL1_hat + beta1
# Activation
AL1=tf.nn.relu(NL1)
但是,我没有关于规范化参数制作tf.variables() 所以,在我看来,要计算规范化参数,代码需要很多不同的输入数据。
当我删除下面的图层规范化时,模型会产生相同的结果而不考虑多少数据。
# Layer 1
HL1 = tf.add(tf.matmul(X, w1), b1)
# Activation
AL1=tf.nn.relu(HL1)
感谢您的阅读。 祝你有个美好的一天