相较于tf.expand_dim、tf.tile,broadcasting,broadcasting使用更加简洁,并且更加节省内存空间。
broadcasting作为tensor运算时的一种优化手段,会在进行运算的tensor满足一定条件时自动进行优化,也可使用tf.broadcast_to将tensor扩展为指定维度。
值得注意的是,在使用broadcasting进行维度扩展时,被扩展的维度值要么为1,要么事先没有此维度。
进行broadcasting时,将对原tensor的shape和欲扩展的shape进行左对齐操作,这里需要注意的是,若两者之间有不同且不同的两者都不为1,则将发生错误。
example:
input:
a=tf.random.normal([4,28,28,3])
b=tf.random.normal([3])
c=(a+b).shape
d=(tf.broadcast_to(b,a.shape)).shape
e=(tf.broadcast_to(b,[4,3,5,3])).shape
print(c,‘\n‘,d,‘\n‘,e)
output:
(4, 28, 28, 3)
(4, 28, 28, 3)
(4, 3, 5, 3)
神经网络学习-tensorflow2.0-Broadcasting
原文:https://www.cnblogs.com/ladade/p/13771694.html