我从Rob Romijnders在GitHub上的工作下载了这段代码,它展示了如何训练和评估时间序列数据。
我尝试使用训练好的模型获取新的期望值,使用了以下代码:
y_result = tf.nn.softmax(tf.matmul(x,h_fc2) + b_fc2)
然后我在另一部分使用以下代码来预测结果:
result_classes = sess.run(y_result, feed_dict={x: flat_pixels,keep_prob: 1.0})
但出现了以下错误:
InvalidArgumentError (请查看上面的跟踪信息): 您必须为dtype为bool的占位符张量'Placeholder_1'提供值 [[Node: Placeholder_1 = Placeholder[dtype=DT_BOOL, shape=[], _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
问题是如何预测我的新期望值?为什么会出现这个错误?如何解决这个问题?
我认为这是关于如何处理Tensorflow API、框架和训练模型的问题。
回答:
错误信息已经很清楚了 – 您没有提供必需的布尔值。对于这段代码来说,这是bn_train
,它表示是否要训练批归一化。请将其添加到您的feed dict中,就像您使用的代码中所传递的一样。
第二部分是:
y_result = tf.nn.softmax(tf.matmul(x,h_fc2) + b_fc2)
这是没有意义的,您要求模型将数据(x)乘以最后一层,那之前的所有层呢?
预测可以通过以下方式实现:
prediction = tf.argmax(h_fc2,1)
然后在训练后
sess.run(prediction, feed_dict={x: flat_pixels,keep_prob: 1.0, bn_train: False})