【发布时间】:2017-12-13 07:26:50
【问题描述】:
在将模型与其存储的 protobuf 版本(通过this conversion script)进行比较时,我发现输出存在差异。为了调试,我分别比较了两个层。对于测试序列期间的权重和实际层输出,我收到相同的输出,因此我不确定如何访问隐藏层。
这是我加载图层的方式
input = graph.get_tensor_by_name("lstm_1_input_1:0")
layer1 = graph.get_tensor_by_name("lstm_1_1/kernel:0")
layer2 = graph.get_tensor_by_name("lstm_1_1/recurrent_kernel:0")
layer3 = graph.get_tensor_by_name("time_distributed_1_1/kernel:0")
output = graph.get_tensor_by_name("activation_1_1/div:0")
这是我想展示各个元素的方式。
显示权重:
with tf.Session(graph=graph) as sess:
print sess.run(layer1)
print sess.run(layer2)
print sess.run(layer3)
显示输出:
with tf.Session(graph=graph) as sess:
y_out, l1_out, l2_out, l3_out = sess.run([output, layer1, layer2, layer3], feed_dict={input: X_test})
这个代码sess.run(layer1) == sess.run(layer1,feed_dict={input:X_test}) 不应该是真的。
谁能帮帮我?
【问题讨论】:
-
但是
sess.run(layer1)是权重,而不是输出。为什么要改成input? -
我对 TF 比较陌生,我认为输入输入层会产生给定级别的输出(例如 output_node 或 layer1),其中仅打印层会显示权重(如上所示)
标签: python tensorflow neural-network output protocol-buffers