比如形状[3,100,20,20]的张量点乘形状[3, 100, 1, 1]的张量可以么?
我试了下,报错啊。都转换成numpy格式就可以用星号 * 进行点乘并广播。
写成 x.numpy() * y.numpy()就能将y广播后执行点乘
直接写 x * y就报错
x,y是用 fluid.dygraph.to_variable() 转的 Paddle 张量。
或者有其他的能广播张量的方法么?比如在reshape的过程中
这个是在模型的 forward()中的处理,里面的数据已经是Paddle张量了。处理时转成numpy再转回去效率低
点乘、广播都是可以的,是其他原因导致的代码错误。
variable肯定不能这么使啊。
就像是python的list想要元素点乘必须用for循环遍历一样,variable也有他自己的运算方法
首先要明确一点,numpy的广播机制是针对某一维度特征元素数量不匹配而设立的,这个你肯定也知道
在paddle的计算图中,所有的variable是通过专门的api来计算的,而文档里也有介绍相关的接口,没错,他就是
elementwise_mul
https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/elementwise_mul_cn.html#elementwise-mul
首先,真心感谢大佬热心帮忙,附上的文档链接尤其令人感动
然后我要感谢、表扬下飞桨框架的小姐姐、小哥哥们,感谢他们把python里的基本运算符给重载(按C++的理解)了,Paddle里的tensor都可以用 + - × / 这些基本数学运算,其中× 是点乘
广播机制也做得很棒,一个维度对上,其它三个维度一起给广播了
后来发现,我上面的错误是两个做点乘的Paddle张量的类型不一样,一个float32,一个int16,然后又有其他问题,把类型不匹配的报错信息给挤掉了,所以坑里爬了半天。。。
Paddle越来越好用了,最近还出了PP yolo,这次让别的框架去转Paddle的模型吧,哈哈~~
yolo的亲爹不养了,疼的人大却有人在~~
青出于蓝
应该的应该的
所以 variable类型的数据可以直接用+-*/来运算吗
数据类型不相等也太粗心了吧哈哈
我试了下,报错啊。都转换成numpy格式就可以用星号 * 进行点乘并广播。
写成 x.numpy() * y.numpy()就能将y广播后执行点乘
直接写 x * y就报错
x,y是用 fluid.dygraph.to_variable() 转的 Paddle 张量。
或者有其他的能广播张量的方法么?比如在reshape的过程中
这个是在模型的 forward()中的处理,里面的数据已经是Paddle张量了。处理时转成numpy再转回去效率低
点乘、广播都是可以的,是其他原因导致的代码错误。
variable肯定不能这么使啊。
就像是python的list想要元素点乘必须用for循环遍历一样,variable也有他自己的运算方法
首先要明确一点,numpy的广播机制是针对某一维度特征元素数量不匹配而设立的,这个你肯定也知道
在paddle的计算图中,所有的variable是通过专门的api来计算的,而文档里也有介绍相关的接口,没错,他就是
elementwise_mul
https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/elementwise_mul_cn.html#elementwise-mul
首先,真心感谢大佬热心帮忙,附上的文档链接尤其令人感动
然后我要感谢、表扬下飞桨框架的小姐姐、小哥哥们,感谢他们把python里的基本运算符给重载(按C++的理解)了,Paddle里的tensor都可以用 + - × / 这些基本数学运算,其中× 是点乘
广播机制也做得很棒,一个维度对上,其它三个维度一起给广播了
后来发现,我上面的错误是两个做点乘的Paddle张量的类型不一样,一个float32,一个int16,然后又有其他问题,把类型不匹配的报错信息给挤掉了,所以坑里爬了半天。。。
Paddle越来越好用了,最近还出了PP yolo,这次让别的框架去转Paddle的模型吧,哈哈~~
yolo的亲爹不养了,疼的人大却有人在~~
青出于蓝
应该的应该的
所以 variable类型的数据可以直接用+-*/来运算吗
数据类型不相等也太粗心了吧哈哈