a = tf.constant([[2],[3],[4]]) - tf.constant([1,2,3])
sess.run(a)
# 结果并不是[1,1,1] This is because when rank of two tensors don’t match, TensorFlow automatically expands the first dimension of the tensor with lower rank before the elementwise operation. 也就是说先有自动扩充维度:[1,2,3]被扩增成[[1,2,3]], 然后相减 [[2],[3],[4]] - [[1,2,3]] =(自动广播) [[2,2,2], [3,3,3], [4,4,4]] - [[1,2,3],[1,2,3],[1,2,3]]
#array([[ 1, 0, -1],
# [ 2, 1, 0],
# [ 3, 2, 1]], dtype=int32)
tensorflow注意rank不一致时, "自动扩充维度" 然后再 "自动广播" 引发计算错误
最新推荐文章于 2024-06-23 20:20:58 发布