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在多玩图片上下载妹子图的实现代码
Aug 13 Python
python使用reportlab画图示例(含中文汉字)
Dec 03 Python
python计数排序和基数排序算法实例
Apr 25 Python
Python网络爬虫神器PyQuery的基本使用教程
Feb 03 Python
pandas数据集的端到端处理
Feb 18 Python
Django框架实现的分页demo示例
May 25 Python
Python多进程编程常用方法解析
Mar 26 Python
python torch.utils.data.DataLoader使用方法
Apr 02 Python
Python Opencv图像处理基本操作代码详解
Aug 31 Python
Python调用Redis的示例代码
Nov 24 Python
pytorch中Schedule与warmup_steps的用法说明
May 24 Python
使用python绘制横竖条形图
Apr 21 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实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
javascript之可拖动的iframe效果代码
2008/08/01 Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
2012/10/15 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
javascript中this指向详解
2016/04/23 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
JS中数据结构之栈
2019/01/01 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
python 实现压缩和解压缩的示例
2020/09/22 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
电气技术员岗位职责
2013/11/19 职场文书
大学校园生活自我鉴定
2014/01/13 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
大学新生军训感言
2014/02/25 职场文书
读书演讲主持词
2014/03/18 职场文书
个人作风建设自查报告
2014/10/22 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL