Pytorch使用

一个Python 深度学习框架,它将数据封装成张量(Tensor)来进行处理。PyTorch中的张量就是元素为同一种数据类型的多维矩阵。在PyTorch中,张量以"类" 的形式封装起来,对张量的一些运算、处理的方法被封装在类中。

Pytorch的安装:pip install torch==2.0.1 -ihttps://pypi.tuna.tsinghua.edu.cn/simple

1、张量的创建

torch.tensor()根据指定数据创建张量data = torch.tensor(data)
torch.Tensor()根据指定形状创建张量,也可以用来创建指定数据的张量data = torch.Tensor(2,3)
data = torch.Tensor([10,20])
torch.arange()创建线性张量data = torch.arange(0,10,2)
torch.linspace()创建线性张量data = torch.linspace(0,11,10)
torch.randn()创建随机张量data = torch.randn(2,3)
torch.zeros()创建全0张量data = torch.zeros(2,3)
torch.ones()创建全1张量data = torch.ones(2,3)
torch.full()创建全为指定值张量data = torch.full([2,3],10)

2、张量的类型转换

data.type(torch.DoubleTensor)将data元素类型转换为float64类型data,double()
data.type(torch.IntTensor)将data元素类型转换为int64类型data.int()
data.type(torch.LongTensor)将data元素类型转换为long类型data.long()
data.type(torch.FloatTensor)将data元素类型转换为float32类型data.float()
print(data.dtype)打印元素的类型
Tensor.numpy()可以将张量转换成ndarray数组data_tensor.numpy()
from_numpy()将ndarray数组转为Tensordata_tensor = torch.from_numpy(data_numpy)
torch.tensor()将ndarray转化为Tensordata_tensor = torch.tensor(data_numpy)
item()对于只有一个元素的张量,使用item()可以将该值从张量中提取出来print(data.item())

3、张量数值计算

addnew_data = data.add(10)不改变源数据
add_data.add_(10)修改源数据
subnew_data = data.sub(10)不改变源数据
sub_data.sub_(10)修改源数据
mulnew_data = data.mul(10)不改变源数据
mul_data.mul_(10)修改源数据
divnew_data = data.div(10)不改变源数据
div_data.div_(10)修改源数据
neg(取相反数)new_data = data.neg(10)不改变源数据
neg_data.neg_(10)修改源数据
torch.mul(data1,data2)对应位置的元素相乘data = torch.mul(data1.data2)
data1*data2对应位置的元素相乘data = data1*data2
torch.matmul(data1,data2)矩阵相乘data = torch.matmul(data1,data2)
data1@data2矩阵相乘data3 = data1@data2

4、张量运算函数

data.mean()均值
data.sqrt()平方根
data.sum()求和
data.exp()指数计算
data.log()对数计算
torch.pow(data,2)平方

5、张量索引操作

data[0]取第0行简单行列索引
data[:.0]取第0列
data[[0,1],[1,2]]取(0,1) (1,2)两个元素的位置列表索引
data[[[0],[1]],[1,2]]取0,1行的1,2列共4个元素
data[:3,:2]前3行的前2列数据列表索引
data[2:,:2]第2行到最后的前2列元素
data[0,:,:]获取0轴的第一个数据多维索引
data[:,0,:]获取1轴的第一个数据
data[:,:,0]获取2轴的第一个数据

6、张量形状操

data.shape获取张量形状print(data.shape)
data.size获取张量形状print(data.shape)
data.reshape(1,6)修改张量形状
data.squeeze()删除形状为1的维度mydata = data.squeeze()
data.unsqueeze(dim=1)在1维度上拓展维度mydata = data.unsqueeze(dim=1)
transpose()交换张量的指定维度torch.transpose(data,1,2)
permute()一次交换更多的维度mydata = data.permute([1,2,0])
data.is_contiguous()判断是否使用整块内存print(data.is_contiguous())
view()只能用于整块内存,一般配合contiguous使用mydata = data.view(3,2)

7、张量拼接操作

torch.cat([data1,data2],dim=0)按0维度拼接,不改变维度数

8、自动微分模块

import torch
# 1.当X为标量时梯度的计算
def test01():
x = torch.tensor(5)
#目标值
y = torch.tensor(0.)
#设置要更新的权重和偏置的初始值
w = torch.tensor(1., requires_grad=True, dtype=torch.float32)
b = torch.tensor(3., requires_grad=True, dtype=torch.float32)
#设置网络的输出值
z = x * w + b
#矩阵乘法#设置损失函数,并进行损失的计算
loss = torch.nn.MSELoss()
loss = loss(z, y)
#自动微分
loss.backward()
#打印w,b变量的梯度
# backward函数计算的梯度值会存储在张量的grad变量中
print("W的梯度:", w.grad)
print("b的梯度", b.grad)

9、案例-线性回归案例

pytorch中进行模型构建的整个流程一般分为四个步骤:

  • 准备数据集
  • 构建要使用的模型
  • 设置损失函数和优化器
  • 模型训练

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值