-1

我正在尝试获取张量的值。

# 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)]]

我已经尝试了所有提到的方法,但它似乎不起作用。

提前致谢

4

1 回答 1

0

不久:

您不能在会话之外评估任何张量变量,您必须在 a 内进行session

为什么不能:

为了理解为什么我们不能这样做,首先我们现在应该现在 tensorflow 背后发生了什么,因为 tensorflow 中的每一件事都是图的一个节点,当我们定义变量并为它们赋值时,实际上我们是在设计在我们运行图表之前,不会分配图表和值。

如何运行图表:

Session 执行图,考虑我们在 tensorflow 中设计网络时的代码块,session 之前的所有内容都像蓝图和这tf.session as sess条线之后的东西,就像施工现场,所以你只能eval()在 session 内评估 () 张量。换句话说,图定义了操作,操作只在会话内部执行。

希望这很有用。有关更多信息,请阅读

于 2017-04-23T15:26:17.803 回答