0

我有一个保存的模型,我希望从中应用最终层的最终权重。我已经加载了图表并知道张量的位置,但我无法将张量的形状作为数组获取。我知道数组的形状是 2048x6。我如何获得像这样的实际值
[[1,2,3],[1,2,3]...]。谢谢

这是我的代码

import tensorflow as tf

saver = tf.train.import_meta_graph('_retrain_checkpoint.meta')
graph = tf.get_default_graph()

tensor = tf.get_default_graph().get_tensor_by_name("final_retrain_ops/weights/final_weights:0")

print(tensor)
print(tf.TensorShape(tensor.get_shape()).as_list()




>>>Tensor("final_retrain_ops/weights/final_weights:0", shape=(2048, 6), dtype=float32_ref)
>>>(2048, 6)
4

1 回答 1

0

要打印权重张量的值,您可以执行以下操作:

with tf.Session() as sess:
    print( sess.run( tensor ) )

sess.run() 评估它参数中的张量,这意味着它将打印值。

但是,有一点问题,您的代码仅加载图 ( tf.train.import_meta_graph('_retrain_checkpoint.meta')) 的结构,而不是预训练的值。因此,您会收到尝试使用未初始化值的错误。

你需要有类似的东西:

saver.restore(sess,tf.train.latest_checkpoint('./'))

要在定义后立即加载它,sess当然,您需要指向正确的检查点目录而不是./.

所以是这样的:

with tf.Session() as sess:
    saver.restore(sess,tf.train.latest_checkpoint('./'))
    print( sess.run( tensor ) )
于 2018-04-30T02:03:21.103 回答