首页 Paddle框架 帖子详情
paddle张量的点乘有广播机制么?
收藏
快速回复
Paddle框架 问答深度学习 3506 49
paddle张量的点乘有广播机制么?
收藏
快速回复
Paddle框架 问答深度学习 3506 49

 

比如形状[3,100,20,20]的张量点乘形状[3, 100, 1, 1]的张量可以么?

0
收藏
回复
全部评论(49)
时间顺序
AIStudio810258
#2 回复于2020-07

我试了下,报错啊。都转换成numpy格式就可以用星号 * 进行点乘并广播。

0
回复
AIStudio810258
#3 回复于2020-07

写成 x.numpy() * y.numpy()就能将y广播后执行点乘

0
回复
AIStudio810258
#4 回复于2020-07

直接写 x * y就报错

x,y是用 fluid.dygraph.to_variable() 转的 Paddle 张量。

0
回复
AIStudio810258
#5 回复于2020-07

或者有其他的能广播张量的方法么?比如在reshape的过程中

0
回复
AIStudio810258
#6 回复于2020-07

这个是在模型的 forward()中的处理,里面的数据已经是Paddle张量了。处理时转成numpy再转回去效率低

0
回复
AIStudio810258
#7 回复于2020-07

点乘、广播都是可以的,是其他原因导致的代码错误。

0
回复
thinc
#8 回复于2020-07
直接写 x * y就报错 [图片] x,y是用 fluid.dygraph.to_variable() 转的 Paddle 张量。

variable肯定不能这么使啊。

0
回复
thinc
#9 回复于2020-07
这个是在模型的 forward()中的处理,里面的数据已经是Paddle张量了。处理时转成numpy再转回去效率低

就像是python的list想要元素点乘必须用for循环遍历一样,variable也有他自己的运算方法

0
回复
thinc
#10 回复于2020-07

首先要明确一点,numpy的广播机制是针对某一维度特征元素数量不匹配而设立的,这个你肯定也知道

0
回复
thinc
#11 回复于2020-07
这个是在模型的 forward()中的处理,里面的数据已经是Paddle张量了。处理时转成numpy再转回去效率低

在paddle的计算图中,所有的variable是通过专门的api来计算的,而文档里也有介绍相关的接口,没错,他就是

elementwise_mul

https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/elementwise_mul_cn.html#elementwise-mul

0
回复
AIStudio810258
#12 回复于2020-07
thinc #11
在paddle的计算图中,所有的variable是通过专门的api来计算的,而文档里也有介绍相关的接口,没错,他就是 elementwise_mul https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/elementwise_mul_cn.html#elementwise-mul
展开

首先,真心感谢大佬热心帮忙,附上的文档链接尤其令人感动

0
回复
AIStudio810258
#13 回复于2020-07

然后我要感谢、表扬下飞桨框架的小姐姐、小哥哥们,感谢他们把python里的基本运算符给重载(按C++的理解)了,Paddle里的tensor都可以用 + - × / 这些基本数学运算,其中× 是点乘

0
回复
AIStudio810258
#14 回复于2020-07

广播机制也做得很棒,一个维度对上,其它三个维度一起给广播了

0
回复
AIStudio810258
#15 回复于2020-07

后来发现,我上面的错误是两个做点乘的Paddle张量的类型不一样,一个float32,一个int16,然后又有其他问题,把类型不匹配的报错信息给挤掉了,所以坑里爬了半天。。。

0
回复
AIStudio810258
#16 回复于2020-07

Paddle越来越好用了,最近还出了PP yolo,这次让别的框架去转Paddle的模型吧,哈哈~~

0
回复
AIStudio810258
#17 回复于2020-07

yolo的亲爹不养了,疼的人大却有人在~~

0
回复
w
wangwei8638
#18 回复于2020-07
Paddle越来越好用了,最近还出了PP yolo,这次让别的框架去转Paddle的模型吧,哈哈~~

青出于蓝

0
回复
thinc
#19 回复于2020-07
首先,真心感谢大佬热心帮忙,附上的文档链接尤其令人感动

应该的应该的

0
回复
thinc
#20 回复于2020-07
然后我要感谢、表扬下飞桨框架的小姐姐、小哥哥们,感谢他们把python里的基本运算符给重载(按C++的理解)了,Paddle里的tensor都可以用 + - × / 这些基本数学运算,其中× 是点乘

所以  variable类型的数据可以直接用+-*/来运算吗

0
回复
thinc
#21 回复于2020-07
后来发现,我上面的错误是两个做点乘的Paddle张量的类型不一样,一个float32,一个int16,然后又有其他问题,把类型不匹配的报错信息给挤掉了,所以坑里爬了半天。。。

数据类型不相等也太粗心了吧哈哈

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户