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 socket C/S结构的聊天室应用实现
Nov 30 Python
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 Python
Python探索之pLSA实现代码
Oct 25 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
python3实现基于用户的协同过滤
May 31 Python
在IPython中执行Python程序文件的示例
Nov 01 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
python中wx模块的具体使用方法
May 15 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
Django contrib auth authenticate函数源码解析
Nov 12 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 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中的登陆login
2007/01/18 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
AngularJS表单基本操作
2017/01/09 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python实现抽奖小程序
2020/04/15 Python
利用python实现周期财务统计可视化
2019/08/25 Python
解决python 上传图片限制格式问题
2019/10/30 Python
python manage.py runserver流程解析
2019/11/08 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
中秋节超市促销方案
2014/01/30 职场文书
大二自我鉴定
2014/01/31 职场文书
一名老师的自我评价
2014/02/07 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
个人培训自我鉴定
2014/03/28 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers