Pytorch基本操作

本文只是学习做的笔记,不喜忽喷。

Pytorch的安装

安装地址介绍:https://pytorch.org/
带GPU的安装:

conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch

不带GPU的安装

conda install pytorch torchvision torchaudio cpuonly -c pytorch

安装之后在ipython中验证

import torch
torch.__version__

注意:安装模块的时候使用的是pytorch,在代码中使用的是torch。

pytorch的使用

1、张量Tensor

各种数值数据都可以称为张量。

  • 常数:scaler:0阶张量
  • 向量:vector:1阶张量
  • 矩阵:matrix:2阶张量
  • 3阶张量…n阶张量

2、张量的创建方法

  • 使用python中的列表或者序列创建tensor
torch.tensor([1,2,3])
  • 使用numpy中的数组创建tensor
torch.tensor(np.array([[1,2,3],[4,5,6]]))
  • 使用torch中的api创建tensor
# 创建3行4列的空的tensor
torch.empty([3,4])
# 创建3行4列的全为0的tensor
torch.zeros([3,4])
# 创建3行4列的全为1的tensor
torch.ones([3,4])
# 创建3行4列的随机值的tensor,随机值的区间为[0,1)
torch.rand([3,4])
# 创建3行4列的随机整数的tensor,随机区间为[lower,high)
torch.randint(low = 0,high = 10,size = [3,4])
# 创建3行4列的随机整数的tensor,随机值的分布均值为0,方差为1
torch.randn([3,4])

3、pytorch中tensor的常用方法

  1. 获取tensor中的数据(当tensor中只有一个元素可用时):tensor.item()
t1 = torch.tensor(np.array(1))
t1.item()
  1. 转化为numpy数组
t2 = torch.tensor(np.array([[1,2,3],[4,5,6]]))
t2.numpy()
  1. 获取形状:tensor.size()
# size既可以获取整个tensor的形状,也可以获取某一维度的形状
t2.size()
t2.size(3)# 2为下标
# shape值可以获取整个tensor的形状
t2.shape
  1. 形状改变:tensor.view((3,4)),类似numpy 中的reshape,是一种浅拷贝,仅仅是形状发生改变,不会改变原来结果的值,会返回一个结果。
  2. 获取维数:tensor.dim()
  3. 获取最大/小值:tensor.max()、tensor.min()
  4. 转置:tensor.transpose()
    transpose在转置是对二维数组可以直接进行转置,对于三维数组需要写清楚哪一列。
    二维的时候tensor.transpose()可以换成tensor.t()
t3 = torch.tensor(np.arange(24).reshape(2,3,4))
# 结果为:tensor([[[ 0,  1,  2,  3],
#         [ 4,  5,  6,  7],
#         [ 8,  9, 10, 11]],
#
#        [[12, 13, 14, 15],
#         [16, 17, 18, 19],
#         [20, 21, 22, 23]]], dtype=torch.int32)
t3.size()
torch.Size([2, 3, 4])
t3.transpose(0,1)# 对第0维和第1维进行转置
# permute将tensor的维度换位
t3.permute(2,1,0)# 交换0维和2维数据
  1. tensor[1,3]获取tensor中第一行第三列的值
  2. tensor[1,3]=5 是对tensor第一行第三列的位置进行赋值5

4、数据类型

tensor中的数据类型非常多,常见的如下:
在这里插入图片描述
具体可以看pytorch的官方文档

  1. 获取tensor的数据类型:tensor.dtype
  2. 创建数据的时候指定类型
torch.ones([2,3],dtype=torch.float32)
torch.tensor([2,3],dtype=torch.float32)# 此处必须是小写的tensor,后面的dtype可以指定数据类型
torch.LongTensor()
torch.FloatTensor()
  1. 类型的修改
tensor.float()/long()/int()

5、tensor的其他操作

  1. tensor的加法
x = torch.ones(5,3,dtype=torch.float)
y = torch.rand(5,3)
# 第一种相加
x+y
# 第二种相加
torch.add(x,y)
# 第三种相加
x.add(y)
# 带下划线的方法会对x进行就地修改
x.add_(y)
# tensor和数字进行操作
x+10
  1. CUDA中的tensor
    torch.cuda这个模块增加了CUDA tensor的支持,能够在cpu和gpu上使用相同的方法操作tensor。
    通过.to方法能够把一个tensor转移到另外一个设备(比如从CPU转到GPU)
# 判断电脑是否支持GPU
torch.cuda.is_available()
# 判断GPU是否可用,如果可用的话就使用GPU,否则使用CPU的tensor
# cuda:0中的数字0指的是在电脑中有多个GPU时选择使用哪一个
# 下面是实例化一个device
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
# 下面可以使用.to进行转换,通过实例化一个CPU的device或者GPU的device,然后进行转换
a = torch.zeros([2,3])
a.to(device)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值