我遇到了保存 MNIST 张量流示例的训练权重 (W) 的问题,如此处所述。MNIST 张量流。如果我的理解是正确的,我们将来需要其他测试用例(不是 MNIST 测试用例)的训练权重。我尝试打印 W.eval() 来获取重量;但它恰好为我提供了一个 784x10 的零矩阵。如何以数组形式或.csv格式(不是 .cpkt)获取权重?
我做了类似的事情:
weight_values = session.run(W)
numpy.savetxt("myfilename.csv", weight_values, delimiter=",")
我遇到了类似的问题。在这里记录答案,以防这也是您的问题/留给后代。我正在将W
打印到控制台,看起来全是零:
[[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
...,
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]]
但实际上,每列中显示的权重对应于每个图像中的前 3 个和后 3 个像素(我认为左上角和右下角)......并且这些位置的任何 MNIST 图像中都没有颜色。所以权重保持零。
如果你遵循Daniel Slater的建议,你可以在输出中看到非零权重。
创建模型后,可以使用tf.train.Saver().save
保存模型。 要使用它,只需运行:
tf.train.Saver().save( SESSION-NAME-HERE , "SAVE-LOCATION-HERE")
在同时使用tf.Session() as SESSION-NAME-HERE:
和SESSION-NAME-HERE.run(tf.global_variables_initializer())
之后的某个时间点(但在关闭会话之前)。
若要还原,可以使用语法与之前类似的tf.train.Saver().restore()
:
tf.train.Saver().restore(SESSION-NAME-HERE , "SAVE-LOCATION-HERE")
在tf.Session() as SESSION-NAME-HERE:
后运行此操作。此代码还原以前使用的变量。
有关更多信息,请参阅:https://www.tensorflow.org/how_tos/variables/
有人使用过梯度动物园吗?
保存、版本控制和共享神经网络模型权重
(自己没用过)