Tensorflow转置随机生成的张量

时间:2018-01-21 23:55:43

标签: python tensorflow

我正在练习TensorFlow基本命令,并开始使用tf.transpose函数。我遇到了一种我无法解释的怪异行为。如果我运行此代码段:

with tf.Session() as test:
...:     tf.set_random_seed(1)
...:     A = tf.random_normal([2,3],mean=1,stddev=4)
...:     B = tf.transpose(A)
...:     print("A=" + str(A.eval()))
...:     print("B=" + str(B.eval()))

我得到这样的印刷品:

A=[[ 0.59019732 -0.68919742  3.13932252]
   [-2.62436795  1.91452241  6.34897995]]
B=[[ 10.35036469  -0.78370452]
   [  2.15025043   5.39917326]
   [  3.15622997  -4.52096176]]

B值来自哪里?如果我运行相同的但是将A张量初始化为一个常数值,整数张量,我看到转置符合预期......我在哪里错了?

编辑:使用下面接受的答案提供的解决方法(谢谢!),当代码片段被修改时,这可以正常工作:

with tf.Session() as test:
...:     tf.set_random_seed(1)
...:     A = tf.random_normal([2,3],mean=1,stddev=4)
...:     B = tf.transpose(A)
...:     print(test.run([A,B]))

1 个答案:

答案 0 :(得分:3)

tensorflow分组功能,每当请求运行时,它都会运行该运行所需的所有操作。

现在,当您第一次执行A.eval()时,tensorflow会发现需要使用随机数对其进行初始化,以便输出答案并执​​行此操作。现在,当它看到B.eval()时,它会发现它需要A的值来评估B,并且它需要使用随机变量初始化A,因此,第二次运行时,不同的随机变量被分配给A

要解决此问题,请在一次运行中同时评估AB

A_out, B_out = sess.run([A, B])