pytorch tensor类型转换中的深坑

在使用PyTorch时,作者遇到了一个整型Tensor自动转换为浮点型的问题。原因是torch.Tensor()构造函数默认创建浮点型Tensor,而torch.tensor()则保留输入元素的类型。此外,文章还提及了如何通过指定dtype属性进行精确的类型转换,例如dtype=torch.int32。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pytorch tensor类型转换中的深坑


今天在写代码时遇到了一个奇怪的问题,当我定义一个全部为整型的tensor变量,我发现其中的元素会自动转换成浮点型:
在这里插入图片描述
找了很久原因才发现是方法名有着极微的差别:
torch.Tensor()是用来定义浮点型tensor类型的,也就是说不管你里面元素填的什么类型,最终都会变成浮点型
而torch.tensor() 注意是小写t,才是用来定义tensor类型变量的,你里面写什么类型的元素他就是什么类型的
在这里插入图片描述
在这里插入图片描述

另外记录一下tensor的类型转化方法:dtype=troch.int32
在这里插入图片描述

蝶形图是利用 Bx 数据为横坐标,Bz 数据为纵坐标,由 Bx 和 Bz 的变化趋势形成蝴 蝶一样的图案。蝶形图包含了裂纹响应信号 Bx 和 Bz 的所有特征,特征明显,容易被操 作人员识别。通常情况下操作人员依据个人经验通过看到蝶形图来判定缺陷的存在。 但是在水下环境中实施无损检测作业,受结构表面附着物影响,无论人员还是水下 机器人(ROV)操纵探头,不可避免地造成探头晃动,很容易产生各类干扰信号,为缺陷特征信号的判定带来巨大挑战。利用本章 4.1 节特征信号增强算法提高缺陷响应幅值, 利用阈值实现缺陷的初步判定,在此基础上,启动智能识别算法,对提离扰动和缺陷特 征信号蝶形图进行识别,达到智能识别的目的。本节建立水下 ACFM 缺陷特征信号与探头扰动特征信号蝶形图数据库,利用 CNN 对大量不同尺寸缺陷蝶形图和各种情况下的探头扰动干扰信号蝶形图训练和学习,并利 用训练好的 CNN 对样本进行预测。 利用单探头对实验室 200 组缺陷试块开展测试,提取不同缺陷的特征信号 Bx 和 Bz 并绘制蝶形图。在较大裂纹位置,特征信号蝶形 图呈现较为完整的蝶形或圆环状。在较小裂纹位置,缺陷响应信号 Bx 或 Bz 变化趋势不 规则,造成蝶形图呈现不封闭或不规则环形。 在没有缺陷位置,将探头大幅度提离试块表面 3-10 mm、探头侧倾、探头越过结构 凸起、探头越过结构表面深坑、探头横向摆动等动作,人为模拟各种干扰信号,形成 200 组探头扰动干扰信号蝶形图,如图 4-19 所示。探头大范围扰动蝶形图信号大多数为一 条窄的斜线或完全不规则线条,部分干扰信号蝶形图也形成圆环状。若仅依靠人员经验 对裂纹特征信号蝶形图和探头干扰信号蝶形图进行区分,很容易形成误判。 将上述 200 组缺陷特征信号蝶形图和 200 组探头干扰信号蝶形图均转换为像素为 228 的灰度图,分别放在不同的文件夹中。裂纹特征信号蝶形图文件夹命名为―defect‖, 干扰信号蝶形图命名为―lift-off‖,以文件夹标签作为样本的属性。 在 Matlab 中建立一个多层卷积神经网络,如图 4-20 所示。该卷积神经网络主要包 括贝叶斯函数、 输入层、卷积层、激活函数层、池化层、全连接层、Softmax 层和输出 层。卷积神经网络的结构、关键参数对于模型的训练和预测至关重要,同时网络的层深、 学习速率等参数众多且相互影响,参数的选取需要耗费大量时间。本文在卷积神经网络 学习之前加入贝叶斯优化函数,以样本测试错误率为目标函数,将神经网络层深、初始 学习率、梯度下降量和归一化强度参数作为贝叶斯函数的输入,对神经网络的结构和关 键参数优化,将优化结果赋值在训练好的卷积神经网络中。 本次 CNN 训练输入样本为像素为 221 的灰度图,激活函数选择 Relu,池化层 选择 max pooling,全连接层输出类别为 2,输出结果用标签形式显示在图片标题上,CNN 经过贝叶斯优化的层数为 7 层。卷积训练过程中,随机选取样本数据库中 190 组裂纹特 征信号蝶形图和 190 组干扰信号蝶形图作为训练样本,将剩余 20 组图片作为测试图片, 在 Matlab 中利用建立的 CNN 对样本库图像训练,CNN 训练过程如图 4-21 所示。 在训练过程用梯度下降法来求取代价函数(Loss function)极小值,梯度下降的迭代性 质能使欠拟合不断演化以获得数据的最佳拟合,每次迭代估计梯度数值并更新训练参数, 多次使用算法获取结果,以得到最优化结果。刚开始训练,精度函数(Accuracy function) 增幅较快,学习率较高,随着迭代次数的增加,学习率变得稳定。训练过程中 Loss function 函数在减小,逐渐得到优化的权值和识别结果。 利用训练好的 CNN 对样本进行测试,结果如图 4-22 所示,前两排图片为缺陷特征 信号蝶形图,预测结果均正确,后两排图片为探头干扰特征信号蝶形图,其中一幅图预 测结果为缺陷,预测错误,本节建立的 CNN 对样本图片综合预测结果准确率为 95%。 测试结果表明,CNN 能够较好地区别缺陷特征信号和探头干扰信号,实现较高精度的 缺陷特征信号智能判定。 根据这段论文,能不能用pytorch复现一下代码,目前已经有训练集和测试集,分别包含裂纹特征信号蝶形图文件夹命名为―defect‖,和干扰信号蝶形图命名为―lift-off‖
最新发布
03-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值