paddle复现pytorch踩坑(四):Tensor

深度学习框架选型实战:PyTorch、TensorFlow、MindSpore等工业落地决策指南 深度学习框架并非通用工具,而是面向特定任务域的计算载体。其核心原理在于将算法逻辑高效映射至硬件执行域,关键取决于动态图调试能力、静态图编译性能、端侧部署链路成熟度及国产芯片原生支持度。技术价值体现在降低算力成本、缩短模型迭代周期、保障产线交付稳定性;典型应用场景覆盖学术研究(如Hugging Face生态快速验证)、工业检测(YOLO系列训推一体)、国产化替代(昇腾+MindSpore全栈适配)与大模型训练(JAX千卡并行)。本文聚焦PyTorch和MindSpore在真实项目中的硬约束匹配与实测避坑经验。 阅读详情

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.dygraph.guard():
      data = to_variable(data)
      index = to_variable(index)
      index = fluid.layers.nonzero(index)
      data = fluid.layers.gather(data, index)
      # data = data[index, :]
      print(data.shape)

示例2

# pytorch code
active = labels_weight > 0
y = bbox_x[active]
    
# paddlepaddle code
active = labels_weight > 0
index = fluid.layers.nonzero(active)
y = fluid.layers.concat([fluid.layers.reshape(fluid.layers.gather(bbox_x[i, :], index[i, :]), [1, -1]) for i in range(index.shape[0])], axis=0)

示例3

# pytorch code
loss_bbox_y = fluid.layers.mean(loss_bbox_y * bbox_weights[active])
    
# paddlepaddle code
loss_bbox_y = fluid.layers.mean(fluid.layers.cast(loss_bbox_y, 'float64')
                                * fluid.layers.concat([fluid.layers.reshape(fluid.layers.gather(bbox_weights[i, :], index[i, :]), [1, -1]) for i in range(index.shape[0])], axis=0))

示例4

# pytorch code
bbox_x3d_dn_fg = bbox_x3d_dn[bind, fg_inds]
    
# paddlepaddle code
bbox_x3d_dn_fg = fluid.layers.gather(bbox_x3d_dn[bind], fluid.dygraph.to_variable(fg_inds))

示例5:不能维度直接赋值

报错:

TypeError: 'paddle.fluid.core_avx.VarBase' object does not support item assignment
# pytorch code
Pred_boxes[:, 0] = pred_ctr_x - 0.5 * pred_w
pred_boxes[:, 1] = pred_ctr_y - 0.5 * pred_h
pred_boxes[:, 2] = pred_ctr_x + 0.5 * pred_w
pred_boxes[:, 3] = pred_ctr_y + 0.5 * pred_h
    
# paddlepaddle code
pred_boxes = fluid.layers.concat([
    pred_ctr_x - 0.5 * pred_w,
    pred_ctr_y - 0.5 * pred_h,
    pred_ctr_x + 0.5 * pred_w,
    pred_ctr_y + 0.5 * pred_h
])

示例6:维度报错

报错:

too many indices (3) for tensor of dimension 2
# pytorch code
bbox_x[bind, :, np.newaxis ] 
# paddlepaddle code
fluid.layers.reshape(bbox_x[bind, :], [1, -1, 1])

示例7:tensor的值不能直接利用

报错:paddlepaddle中的value不能直接拿出来用。

TypeError: The type of 'shape' in reshape must be list[int] or tuple(int) in Dygraph mode, but received <class 'list'>, which contains Variable.

错误代码:其中stack_size, feat_size 为 tensor。

# paddlepaddle code
shift_x1 = fluid.layers.reshape(fluid.dygraph.to_variable(shift_x1), [1, stack_size, feat_size[1]])

改进加入

# paddlepaddle code
stack_size = stack_size.numpy()
feat_size = feat_size.numpy()

Tensor数据类型判断

# pytorch code
if data_type == torch.tensor:
    
# paddlepaddle code
if data_type == fluid.core_avx.VarBase:

其他用法

# pytorch code
b = q_lt[..., :N]
    
# paddlepaddle code
b = q_lt[:, :, :, :N]

需要注意pytorch中.contiguous方法

.contiguous()方法,使tensor的元素在内存空间中连续
通常

tensor.contiguous().view()
==
tensor.reshape()
paddle-gpu安装避坑指南 在终端中输入ls /usr/lib |grep lib,可以看到shared library中并没有libcudnn.so和libcublas.so。在shared library中创建libcudnn.so和libcublas.so。找到libcudnn.so和libcublas.so的位置。 阅读详情

相关推荐

AttributeError: module ‘paddle‘ has no attribute ‘Tensor‘

ChatGLM-6B使用了和ChatGLM相同的技术,针对中文问答和对话进行了优化经过约1T标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62亿参数的ChatGLM-6B已经能生成相当符合人类偏好的回答。总之,ChatGLM-6B在语言生成和对话方面表现出了非常出色的能力,可以广泛应用于人机交互、自然语言处理、智能客服等领域。这是一部非常经典的电影,讲述了一群高速赛车手在赛车世界中的奋斗和冒险,同时也展现了他们的友谊、家庭和人生价值观。具有语言理解、文本生成和对话等功能。

weixin_45751925的博客 1583

解决方案:AttributeError: module ‘paddle.fluid‘ has no attribute ‘data‘

这个报错表明在你的代码中使用了`paddle.fluid.data`的方法,但是`paddle.fluid`模块中没有名为`data`的属性。这可能是因为你正在使用的PaddlePaddle版本中的API发生了变化,或者你的代码中存在一些错误。`fluid.data`方法被`paddle.static.data`方法所替代。为了解决这个问题,你可以尝试将代码中的`fluid.data`替换为`paddle.static.data`,并重新运行代码。

追求卓越 5649

STM32_USB复合设备开发实战:基于CubeMX插件简化HID与CDC集成

本文详细介绍了如何使用STM32CubeMX插件简化USB复合设备开发,特别是HID与CDC的集成。通过自动处理多设备描述符融合和端点资源分配,该插件显著降低了开发复杂度,帮助工程师快速实现键盘、鼠标和虚拟串口等复合功能,提升STM32 USB开发效率。

palm99的专栏 747

AttributeError: module ‘paddle.fluid.layers‘ has no attribute ‘interpolate‘

AttributeError: module 'paddle.fluid.layers' has no attribute 'interpolate'

sizewos的博客 1306

ArcMap 10.7/10.8启动加载界面后闪退?可能是这个隐藏的Normal.mxt模板文件在搞鬼

本文深入分析了ArcMap 10.7/10.8启动加载界面后闪退的问题,指出Normal.mxt模板文件损坏是常见原因。提供了从定位、删除模板文件到系统级修复的完整解决方案,帮助GIS工程师快速恢复工作流程。

weixin_28523493的博客 329

在Ubuntu上通过Wine完美运行企业微信的详细指南

本文提供了在Ubuntu系统上通过Wine兼容层安装和运行企业微信的详细教程。针对官方未提供Linux版本的痛点,指南推荐使用Ubuntu Kylin团队优化打包的Wine环境,通过简单的命令行步骤即可完成部署,并涵盖启动、中文输入法配置、文件管理等常见问题的解决方案,帮助用户实现高效、稳定的办公沟通。

weixin_29306317的博客 228

解决Linux系统下问题:AttributeError: module ‘paddle.fluid‘ has no attribute ‘install_check‘

解决问题:AttributeError: module ‘paddle.fluid’ has no attribute ‘install_check’

qq_40280673的博客 2303

探索Vortex开源GPGPU:RISC-V SIMT架构(2),指令Decode

本文分析了Vortex RISC-V内核的Decode模块设计。文章详细介绍了指令译码过程,包括操作码、功能码和寄存器字段的提取,以及不同类型指令(R/I/S/B/U/UJ)的立即数处理。重点阐述了基于操作码和功能码的分层译码逻辑,包括ALU运算、分支跳转、系统调用等指令的译码规则。此外,还描述了定制指令的处理机制以及与调度器的握手协议。Decode模块通过组合逻辑实现快速译码,并将结果传递给下级Issue模块,同时协调指令流控制。

weixin_55313207的博客 1792

深入浅出PaddlePaddle函数——paddle.to_tensor

paddle.to_tensor

冯·诺依曼 1万+

windows中通过docker部署LocateAnything-3B模型

windows中通过docker部署LocateAnything-3B模型

yilvyangguang520的博客 483

11.8 LangGraph生产级AI Agent开发:从节点定义到高并发架构的终极指南

本文介绍了如何使用 LangGraph 构建生产级 AI Agent,重点解析了 LangGraph 的核心设计、节点与边的实现方法论、生产级实现技巧以及性能优化策略。LangGraph 通过图结构抽象复杂 AI 工作流,核心组件包括节点、边、状态和检查点。节点通过 Python 函数封装原子业务逻辑,边通过条件分支实现动态工作流。生产级实现技巧包括状态管理、多会话控制和错误处理机制。性能优化策略涉及并行执行和缓存机制设计。文章还提供了旅行规划 Agent 的实战案例和常见问题解决方案,帮助开发者构建高效、

yonggeit的博客 3266

paddle,图像转tensor 两种方法的不同

paddle,图像转tensor 两种方法的不同

Vertira的博客 2075

财务惊呼“不可能”!Python 自动识别 PDF 发票,数据秒级录入系统

电子发票(原生 PDF):这种最爽,文字是可以选中的。我们用 PyPDF2 直接提取文本,速度快,准确率 100%。 纸质扫描/拍照发票:这种是图片。必须上 OCR(光学字符识别)。我们要用百度开源的 PaddleOCR,这是目前中文识别效果最好的开源库之一,吊打早已过气的 Tesseract。

BUG猿的博客 1023

Paddle 点灯人 之 Tensor

Paddle点灯人这个专栏,我希望更多是给予部分已有深度学习基础亦或者是想快速部署应用的进行学习,这样利用paddle做出更简单更好的方法,因为如果从0开始写Paddle的使用和介绍,我相信paddle的文档已经很详细了,如果想从0开始学,可以查看所以我希望我基于此,更多的是为了,让大家在学习torch的同时,对paddle也有一定了解,可以使用paddle更便捷的部署在自己的项目中,这样能加快学习的效率,也可以免费使用paddle的GPU资源,有更好的产出和应用部署。

风信子的猫Redamancy的快乐星球 2267

康耐视visionpro-CogBlobTool工具详细说明

康耐视visionpro-CogBlobTool工具详细说明

视觉人机器视觉的博客 1724

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

paddle复现pytorch踩坑(六):多维度index下gather的用法

fluid.layers.gather(input, index, overwrite=True) 作用:根据索引 index 获取输入(input)的最外层维度的条目,并将它们拼接在一起。 链接:pp飞桨API说明 对比:通常来说此api用法和pytorch没什么特殊,但因为API缺少了dim参数,使得当多维tensor索引时报错 示例 输入维度 X.shape = [b, c, 81204] Index.shape = [b, c, 720000] 输出维度 X_offset = [b, c, 7

qq_32097577的博客 1720

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

PyTorch与Paddle映射表

X2Paddle 致力于帮助其它主流深度学习框架开发者快速迁移至飞桨框架,目前提供三大功能预测模型转换支持 Caffe/TensorFlow/ONNX/PyTorch 的模型一键转为飞桨的预测模型,并使用 PaddleInference/PaddleLite 进行 CPU/GPU/Arm 等设备的部署PyTorch 训练项目转换。

ai领域探索者,欢迎一起交流,目前从事具身智能行业。 1288

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

飞浆paddle踩坑

1.原pytoch的tensor.float(), 在paddle中没有, 可以替换成tensor.astype(‘float32’)

wen_ding的博客 230

Android NNAPI - Paddle - TensorFlow - PyTorch ArgMax and ArgMin 的定义与计算过程

Android NNAPI - Paddle - TensorFlow - PyTorch ArgMax and ArgMin 的定义与计算过程

程永强 1006

【Paddle】Paddle学习笔记(对比Pytorch)

记录一些常用的片段 【参考:飞桨(Paddlepaddle)的动态图、静态图全流程例子_AlexDish的博客-优快云博客】 tensor 【参考:to_tensor-API文档-PaddlePaddle深度学习平台】 【参考:tolist-API文档-PaddlePaddle深度学习平台】 模型保存及加载 【参考:模型保存及加载-使用文档-PaddlePaddle深度学习平台】 ...

myaijarvis notebook 1082

如何将PyTorch、TensorFlow模型转换为PaddlePaddle模型

【飞桨开发者说】张鑫(左),西安电子科技大学研二在读,软件设计师,cv爱好者。李文博(右),硕士研究生,研究方向为泛安防领域目标检测。本文手把手教你使用X2Paddle将PyTorch、...

百度大脑 9352

【PyTorch系列教程一】深度学习框架及Tensor的基本介绍

一、深度学习框架比较 深度学习的基本介绍在这里就不做过多介绍,感兴趣的童鞋可以在网上搜索,有很多这方面的知识。本博只是介绍一些基本的深度学习开发框架。 下图为7个深度学习框架的比较,字体比较小,大家可以放大观看。 除此之外,还有一些其他的深度学习开发框架,比如百度的PaddlePaddle、微软的CNTK等,这些开发框架,受众比...

m0_37565948的博客 496

nn.Parameter无法载入权重踩坑

打印模型参数的键值也发现模型的权重里没有pos_embedding这一项,具体的代码如下所示。原来是因为在PyTorch中,对nn.Parameter进行repeat()操作会将参数转换为普通Tensor,导致无法被正确注册。正确的做法应该是在__init__函数中先用nn.Parameter进行注册。这样就可以正常保存模型的权重并且加载了^ _ ^

lzq6261的博客 287

【pytorch】|对二维矩阵特征图tensor求和求均值

# -*- coding: utf-8 -*- import torch a = torch.ones(size=(1, 3, 4, 4)) # 法1 b = a.sum(axis=[2, 3], keepdim=False) # 法2 alpha = a.view(1, 2, -1).sum(2) b==alpha mean相同 b=torch.tensor([[13., 14., 16.]]) print(b[:, :, None, None] * a) 不同维度点乘 ...

qq_35608277的博客 2282

wordembedding-paddle-pytorch-tf

构造词典,要把输入的字符串转换id,首先把字符和id的映射定义好字典 WORD_DICT_URL = "https://paddlenlp.bj.bcebos.com/data/dict.txt" # Loads vocab. vocab_path = "./dict.txt" if not os.path.exists(vocab_path): # download in current directory get_path_from_url(W

qq_15821487的博客 253

Paddle Fluid v1.3深度学习框架核心升级与工业实践

深度学习框架作为AI工程化的基础设施,其核心价值在于平衡研发效率与部署性能。Paddle Fluid v1.3通过动态图与静态图融合架构,实现了算法开发阶段的高效调试与生产环境的最佳性能。在显存优化方面,采用内存池和计算图生命周期分析技术,使ResNet50训练的显存占用降低24%。该版本特别强化了工业部署能力,支持TensorRT和MKLDNN等多后端推理加速,在移动端通过NEON指令优化实现GRU算子3倍提速。对于分布式训练场景,创新性地提出稀疏参数服务器架构,在百亿特征推荐系统中实现95的加速比。这些

weixin_30410119的博客 411
上一篇: paddle复现pytorch踩坑(三):paddleAPI对照表(后续补充)
下一篇: paddle复现pytorch踩坑(五):dygraph的一些用法示例
潜沉10
博客等级 码龄11年 66粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值