pytorch--之halfTensor的使用详解


Posted in Python onMay 24, 2021

pytorch--之halfTensor的使用详解

证明出错在dataloader里面

在pytorch当中,float16和half是一样的数据结构,都是属于half操作,

然后dataloader不能返回half值,所以在dataloader里面,要把float16改成float32即可返回

补充:Pytorch中Tensor常用操作归纳

对常用的一些Tensor的常用操作进行简单归纳,方便日后查询。后续有用到再补充。

pytorch--之halfTensor的使用详解

1、创建Tensor

import torch
#经典方式
device = torch.device("cuda:0")
x = torch.tensor([1,2],dtype = torch.float32,device = device,requires_grad=True)
w = sum(2 * x)
w.backward()
print(x.device)
print(x.dtype)
print(x.grad)
#Tensor
y = torch.Tensor([1,2,3])
#等价于
y = torch.FloatTensor([1,2,3])#32位浮点型
#后者声明打开梯度
y.requires_grad = True
#还有其他类型,常用的
torch.LongTensor(2,3)
torch.shortTensor(2,3)
torch.IntTensor(2,3)
w = sum(2 * y)
w.backward()
print(y.grad)
print(y.dtype)

输出:

cuda:0
torch.float32
tensor([2., 2.], device='cuda:0')
tensor([2., 2., 2.])
torch.float32

和numpy类似的创建方法

x = torch.linspace(1,10,10,dtype = torch.float32,requires_grad = True)
y = torch.ones(10)
z = torch.zeros((2,4))
w = torch.randn((2,3))#从标准正态分布(均值为0,方差为1)上随机采用,高斯噪声点,而rand相当于在0,1间随机采样
#torch.normal()????
print(x)
print(y)
print(z)
print(w)

输出

tensor([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.], requires_grad=True)
tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
tensor([[0., 0., 0., 0.],
        [0., 0., 0., 0.]])
tensor([[-0.6505,  1.3897,  2.2265],
        [-1.7815, -1.8194, -0.4143]])

从numpy转换

np_data = np.arange(2,13,2).reshape((2,3))
torch_data = torch.from_numpy(np_data)#numpy转tensor
print('\nnumpy',np_data)
print('\ntorch',torch_data)

输出

numpy [[ 2  4  6]
 [ 8 10 12]]

torch tensor([[ 2,  4,  6],
        [ 8, 10, 12]], dtype=torch.int32)

2、组合

import torch
x = torch.arange(0,10,1).reshape(2,-1)#size=(2,5)
y = torch.ones(10).reshape(2,-1)#size=(2,5)
print(x)
print(y)
w = torch.cat((x,y),dim = 0)#默认从size最左边开始,这里结果为:(2+2,5)
z = torch.cat((x,y),dim = 1)#(2,5+5)
print(w,w.size())
print(z,z.size())
#还有种stack()

输出:

tensor([[0, 1, 2, 3, 4],
        [5, 6, 7, 8, 9]])
tensor([[1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1.]])
tensor([[0., 1., 2., 3., 4.],
        [5., 6., 7., 8., 9.],
        [1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1.]]) torch.Size([4, 5])
tensor([[0., 1., 2., 3., 4., 1., 1., 1., 1., 1.],
        [5., 6., 7., 8., 9., 1., 1., 1., 1., 1.]]) torch.Size([2, 10])

3、数据类型转换

法一

x = torch.rand((2,2),dtype = torch.float32)
print(x.dtype)
x = x.double()
print(x.dtype)
x = x.int()
print(x)

输出:

torch.float32
torch.float64
tensor([[0, 0],
        [0, 0]], dtype=torch.int32)

法二

x = torch.LongTensor((2,2))
print(x.dtype)
x = x.type(torch.float32)
print(x.dtype)

输出:

torch.int64
torch.float32

4、矩阵计算

x = torch.arange(0,4,1).reshape(2,-1)
print(x)
print(x * x )#直接相乘
print(torch.mm(x,x))#矩阵乘法
print(x + 1)#广播
print(x.numpy())#转换成numpy

输出:

tensor([[0, 1],
        [2, 3]])
tensor([[0, 1],
        [4, 9]])
tensor([[ 2,  3],
        [ 6, 11]])
tensor([[1, 2],
        [3, 4]])
[[0 1]
 [2 3]]

5、维度变化

主要是对维度大小为1的升降维操作。

torch.squeeze(input)#去掉维度为1的维数
 torch.unsqueeze(input,dim)#指定位置增加一维

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python封装对象实现时间效果
Apr 23 Python
通过C++学习Python
Jan 20 Python
python如何创建TCP服务端和客户端
Aug 26 Python
python学习之hook钩子的原理和使用
Oct 25 Python
修改python plot折线图的坐标轴刻度方法
Dec 13 Python
python 中如何获取列表的索引
Jul 02 Python
Django接收post前端返回的json格式数据代码实现
Jul 31 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
Aug 05 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
Python 中的 copy()和deepcopy()
Nov 07 Python
pandas DataFrame.shift()函数的具体使用
May 24 #Python
教你怎么用python实现字符串转日期
May 24 #Python
pandas中DataFrame重置索引的几种方法
May 24 #Python
pandas取dataframe特定行列的实现方法
pytorch 如何使用amp进行混合精度训练
只需要这一行代码就能让python计算速度提高十倍
pytorch 如何使用float64训练
You might like
PHP 单引号与双引号的区别
2009/11/24 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
常用js脚本
2006/12/03 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
JavaScript正则表达式和级联效果
2017/09/14 Javascript
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
python Flask 装饰器顺序问题解决
2018/08/08 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
python 获取计算机的网卡信息
2021/02/18 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
历史系毕业生自荐信
2013/10/28 职场文书
行政部岗位职责范本
2014/03/13 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
导游欢迎词范文
2015/01/23 职场文书
社区工作者个人总结
2015/02/28 职场文书
大国崛起英国观后感
2015/06/02 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技