• Pytorch编程基础



    前言

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


    一、导入库

    import torch
    from torch.autograd import Variable # 自动求导变量
    from torch import nn, optim # 网络层与优化器
    from torch.utils.data import TensorDataset, DataLoader # 数据集迭代器
    
    • 1
    • 2
    • 3
    • 4

    二、张量

    1.创建张量

    从列表生成:a = torch.tensor([1,2,3], dtype=int)10: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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2.属性与方法

    维度:a.ndim;形状:a.shape,a.size()
    数值:a[0].item()
    类型转换:a.float(),a.type(torch.float32)
    
    • 1
    • 2
    • 3

    3.numpy转换

    array = np.array(tensor)
    tensor = torch.from_numpy(array)
    tensor = torch.tensor(array)
    
    • 1
    • 2
    • 3

    4.维度变换

    b = a.view(shape) 
    b = a.reshape(shape) 
    
    • 1
    • 2

    5.运算操作

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    三、自动求导

    x = torch.ones(shape, requires_grad=True)
    y = x * x
    y.backward()
    grad = x.grad
    
    • 1
    • 2
    • 3
    • 4

    四、模型保存

    1、保存模型:
    torch.save(model.state_dict(), 'model.pth')
    2、载入模型
    model.load_state_dict(torch.load('model.pth'))
    
    • 1
    • 2
    • 3
    • 4

    五、模型定义

    1.层连接

    # 层
    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.损失函数

    nn.MSELoss()
    nn.CrossEntropyLoss()
    
    • 1
    • 2

    3.优化器

    optim.SGD(model.parameters(), lr=0.1)
    optim.Adam(model.parameters(), lr=0.001)
    
    • 1
    • 2

    总结

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

  • 相关阅读:
    Vulnhub靶机网卡启动失败(Raise network interfaces)
    C++ Tutorials: Numerical Bases
    【毕业设计】深度学习人体语义分割在弹幕防遮挡上的实现 - python
    c# 读取xml到dataset中
    java、mybatis海量数据分页方案
    Linux·设备
    数据分析思维分析方法和业务知识——业务指标
    什么是CRM系统?CRM的价值体现在哪里?
    WSL2安装历程
    Java中的自定义异常
  • 原文地址:https://blog.csdn.net/qq_53715621/article/details/133513207