我正在使用tensorflow 1.15.0。
我正在尝试通过sess.run()获得keras层的输出值。而且我确定已经指定了图层输入形状,并且可以看到具有正确形状的输出张量。但是当我尝试获得张量值时,会出现错误。
代码如下:
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
sess = tf.Session()
layer = layers.Dense(3)
x = tf.ones((1, 4))
y = layer(x)
layer.weights # I want to get weights value, print it first
结果如预期:
[
,
]
但是当我试图获得张量值时:
sess.run(layer.weights[0])
弹出一条很长的错误消息:(以下是核心消息)
FailedPreconditionError:从容器:本地主机读取资源变量密集/内核时出错。这可能意味着该变量未初始化。找不到:容器localhost不存在。 (找不到资源:localhost / dense / kernel)
有人可以帮我解决这个问题吗?谢谢。
答案 0 :(得分:1)
在使用变量之前(例如,与tf.global_variables_initializer一起使用,可能需要初始化变量(在密集层中)。在声明变量之后但在使用它们之前,尝试添加以下行:
sess.run(tf.global_variables_initializer())
您还可以调用tf.variables_initializer来初始化列表中的变量。