Pytorch编程基础

文章目录


前言

记录一些pytorch的基本使用方法。


一、导入库

python 复制代码
import torch
from torch.autograd import Variable # 自动求导变量
from torch import nn, optim # 网络层与优化器
from torch.utils.data import TensorDataset, DataLoader # 数据集迭代器

二、张量

1.创建张量

python 复制代码
从列表生成:a = torch.tensor([1,2,3], dtype=int)
全1全0:torch.ones(shape),torch.zeros(shape)
整数序列[m,n):torch.arrange(m,n)
随机数[0,1):torch.rand(3,4)
随机整数[m,n):torch.randint(m,n,shape)
正态分布:torch.randn()
相同形状随机数:b = torch.rand_like(a, dtype=float)

2.属性与方法

python 复制代码
维度:a.ndim;形状:a.shape,a.size()
数值:a[0].item()
类型转换:a.float(),a.type(torch.float32)

3.numpy转换

python 复制代码
array = np.array(tensor)
tensor = torch.from_numpy(array)
tensor = torch.tensor(array)

4.维度变换

python 复制代码
b = a.view(shape) 
b = a.reshape(shape) 

5.运算操作

python 复制代码
a+b,torch.add(a,b[,out=c]), a.add_(b)
a-b,a*b,a/b, a%b,a//b,a**m
平方根:torch.sqrt(a)
矩阵乘法:torch.matmul(a, b)
转置:a.T
求和:torch.sum(a)
均值:.mean(a),中位数:.median(a)
最值:torch.max/min/argmax/argmin(a)

三、自动求导

python 复制代码
x = torch.ones(shape, requires_grad=True)
y = x * x
y.backward()
grad = x.grad

四、模型保存

python 复制代码
1、保存模型:
torch.save(model.state_dict(), 'model.pth')
2、载入模型
model.load_state_dict(torch.load('model.pth'))

五、模型定义

1.层连接

python 复制代码
# 层
nn.Linear(in_features, out_features)
nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding)
nn.MaxPool2d(kernel_size,stride)
nn.LSTM(input_size, hidden_size, num_layers, batch_first)
# 激活函数
self.tanh = nn.Tanh()
self.relu = nn.ReLU()
self.softmax = nn.Softmax(dim=1)
# 模型序列
self.fc = nn.Sequential(nn.Linear(784,128), nn.ReLU())
self.conv = nn.Sequential(nn.Conv2d(32,64,5,1,2), nn.ReLU(), nn.MaxPool2d(2,2))
self.lstm = nn.LSTM(input_size=28, hidden_size=64, num_layers=1, batch_first=True)

2.损失函数

python 复制代码
nn.MSELoss()
nn.CrossEntropyLoss()

3.优化器

python 复制代码
optim.SGD(model.parameters(), lr=0.1)
optim.Adam(model.parameters(), lr=0.001)

总结

pytorch的张量操作与numpy数组基本一致。模型保存只保存参数,加载时需要重新定义模型。采用继承类的形式来定义模型,在初始化中设置模型参数,在方法中进行前向传播,注意按层要求修改数据形状。

相关推荐
AI周红伟1 小时前
All in Token, 移动,电信,联通,阿里,百度,华为,字节,Token石油战争,Token经济,百度要“重写”AI价值度量
大数据·人工智能·机器学习·百度·copilot·openclaw
AI周红伟1 小时前
Token经济学:AI时代的新货币战争,All in Token, 新时代的石油战争,华为,阿里,百度,字节的石油战争
大数据·人工智能·机器学习·百度·华为·copilot·openclaw
XM_jhxx5 小时前
±0.03mm的精度怎么保证?翌东塑胶用AI赋能质量管控升级
人工智能
阿正的梦工坊5 小时前
深入理解 PyTorch 中的 unsqueeze 操作
人工智能·pytorch·python
FreakStudio6 小时前
硬件版【Cursor】?aily blockly IDE尝鲜封神,实战硬伤尽显
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
秦歌6667 小时前
DeepAgents框架详解和文件后端
人工智能·langchain
测试员周周8 小时前
【Appium 系列】第06节-页面对象实现 — LoginPage 实战
开发语言·前端·人工智能·python·功能测试·appium·测试用例
霸道流氓气质8 小时前
基于 Milvus Lite 的 Spring AI RAG 向量库实践方案与示例
人工智能·spring·milvus
ar01238 小时前
AR巡检平台:构筑智能巡检新模式的数字化引擎
人工智能·ar
语音之家8 小时前
【预讲会征集】ACL 2026 论文预讲会
人工智能·论文·acl