paddle复现pytorch踩坑(四):Tensor

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

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.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值