关于报错:non-singleton dimension 1


passion!!!

要解决的问题

报错信息:RuntimeError: The size of tensor a (1280) must match the size of tensor b (4) at non-singleton dimension 1 。什么是non-singleton dimension 1.

出现问题的原因

    出现此问题的原因,是两个tensor a 和 b的shape不匹配,当然这个不匹配不是简单的不相同,因为我们知道,python是有自动广播机制的,比如,对于加法操作,如果张量a的shape是[3, 1280, 8,8] ,b的shape是[1, 1280, 8, 8], 那么在python中这两个张量是可以通过广播机制实现相加的,也就是b会被自动广播为shape为[3, 1280, 8, 8]。
  了解了python里的广播机制后,那我们再来看出现这个报错的原因。这说明 tensor a 和 tensor b不满足广播机制,因此无法计算。 那么广播机制到底是什么呢?
  其实很简单,就是广播会自动对维度数不一致且维度数是1也就是所谓的singleton dimension 1维度进行广播,从而实现计算。举个例子, [1, 1280, 8, 8] 和[3, 1280, 8, 8] 可以通过广播进行计算对吧,但 [1, 1280, 8, 8] 和 [1, 4, 8, 8] 是无法通过广播实现相加的,这也正是此处报错的原因。 因为这两个shape 的维度不同处在dim=1处,而这两个张量在dim=1处的维度数都不为1,因此无法实现广播。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值