我试图获得张量的值。
# First Layer
encoder_layer1 = tflearn.fully_connected(x,41,activation='relu',bias=True)
layer1_weights = encoder_layer1.W
layer1_bias = encoder_layer1.b
打印出来的结果是:
The layer 1 weights are: <tf.Variable 'FullyConnected/W:0' shape=(41, 41) dtype=float32_ref>
甚至eval()似乎也不起作用。它会抛出错误
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value FullyConnected/W
[[Node: _send_FullyConnected/W_0 = _Send[T=DT_FLOAT, client_terminated=true, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/cpu:0", send_device_incarnation=-6055748491062458677, tensor_name="FullyConnected/W:0", _device="/job:localhost/replica:0/task:0/cpu:0"](FullyConnected/W)]]
我尝试了所有方法,但它似乎无法发挥作用。
提前致谢
答案 0 :(得分:0)
不久:
您无法评估会话之外的任何张量变量,您必须在session
内进行评估,
为什么不能:
为了理解为什么我们不能这样做,首先我们应该在tensorflow的背后发生什么,因为tensorflow中的每个东西都是图的节点,当我们定义变量并为它们赋值时,实际上我们正在设计图形,并且在运行图形之前不会分配值。
如何运行图表:
会话执行图表,考虑我们在张量流中设计网络时的代码块,会话之前的所有内容,如蓝图和此tf.session as sess
行之后,如建筑工地,因此您只能评估(eval()
)会议内的张量。换句话说,图形定义了操作,操作仅在会话内执行。
希望这很有用。有关更多信息,请阅读this