TensorFlow2.0学习笔记---broadcasting

之前遇到过一个问题,w@x +b 时, w@x.shape = [b,10]  b.shape = [10] ,两个shape不一样的矩阵在数学上是不能相加的,但是为什么在TensorFlow这里可以相加呢,?broadcasting就是解决这个问题的。

从这个图中可以看出来,broadcasting的操作是将两个shape不同的矩阵进行数据平移复制,从而使他们可以相加。

          shape中,靠右的维度是小维度,靠左的维度是大维度。从上面两个例子可以看出来,broadcasting首先将数据  右对齐  ,也就是小维度先对齐,然后在缺失的维度上先补1个size,再讲size为1的维度转化成可以相加运算的size。

          broadcasting并没有进行数据在存储上的复制,也就是说,复制的数据是不占用内存的。

            上面这个例子是不可以进行broadcasting来相加的,因为未对齐的维度不是size=1

下面是可以broadcasting的

最后我们来回顾一下,w@x +b 时, w@x.shape = [b,10]  b.shape = [10] ,两个shape不一样的矩阵在数学上是不能相加的,但是为什么在TensorFlow这里可以相加呢?

即:

[b,10] + [10]

[b,10] + [1,10]

[b,10] + [b,10]

因为[10]代表偏置,即有十个输出节点,每一个节点都要加一个输出偏置。

b代表batch,即b个图片,b个图片的在经过网络后变成了【b,10】的shape,而每一个图片经过网络后的结果都要加上这个偏置,所以就有了broadcasting。

从这个代码看出来,当两个shape不同相加时,函数内部是自动支持broadcasting的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值