paddlepaddle从1.5版本以上采用动态图的思想,本博客基于1.8.0以上版本。
关于Tensor的用法:
- pytorch可以使用静态数组索引;可以使用tensor索引
- paddlepaddle可以使用静态数组索引;不可以使用tensor索引
示例1:索引示例
# pytorch code
aa = cls[active, :]
# paddlepaddle code
aa = cls[active, :]
报错:
SystemError: <built-in method __getitem__ of PyCapsule object at 0x0000023217C75F90> returned a result with an error set
- 其中
activate = tensor [1,… 0, 1…0]
clc = tenor.shape [300, 4] - 原因:在pytorch里可以这样写,但是在paddle里不行
- 改为:利用nonzero 和 gather函数
# paddlepaddle code
index = fluid.layers.nonzero(active)
aa = fluid.layers.gather(cls, index)
测试全代码
import paddle.fluid as fluid
from paddle.fluid.dygraph.base import to_variable
import numpy as np
data = np.ones([300, 4]).astype('float32')
index = np.zeros([300]).astype('int')
index[0] = 1
index[2] = 1
index[10] = 1
with fluid.

本博客基于PaddlePaddle 1.8.0以上版本,对比了Pytorch和PaddlePaddle中Tensor的用法。如索引方面,Pytorch可用静态数组和tensor索引,PaddlePaddle仅能用静态数组索引。还列举了维度赋值、取值等方面的报错示例及改进方法,同时提醒注意Pytorch的.contiguous方法。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



