Tensorflow矩阵广播

时间:2018-06-02 06:02:25

标签: python tensorflow

在tensorflow中,我尝试添加两个矩阵。一个是3 x 3矩阵,另一个是3 x 1矩阵,所以我预计后一个矩阵被广播。 但结果并不是我的预期。 你能解释一下在下面的代码中执行什么样的计算吗?

import tensorflow as tf
import numpy as np

A = tf.random_normal([3, 3], mean=1, stddev=4, seed = 1)
B = tf.Variable([[1, 2, 3]], dtype=tf.float32)
C = A + B

init = tf.initialize_all_variables()

with tf.Session() as sess:
    sess.run(init)
    print("A")
    print(A.eval())
    print("\nB")
    print(B.eval())
    print("\nC")
    print(C.eval())

结果如下。

A
[[-2.24527287  6.93839502  1.26131749]
[-8.77081585  1.39699364  3.36489725]
[ 3.37129188 -7.49171829 -1.89158893]]

B
[[ 1.  2.  3.]]

C
[[ 6.96361637  4.79503536  5.32562923]
[ 2.75787783  2.64941168  2.83947849]
[ 1.70853901  9.26744461  1.85234141]]

1 个答案:

答案 0 :(得分:1)

您的问题不是矩阵广播问题,而是源于您使用随机数生成器而不是同时执行节点的事实。请参阅this question

要查看示例中的广播,请使用

sess.run([A, B, C])