码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Pytorch编程基础


    文章目录

    • 前言
    • 一、导入库
    • 二、张量
      • 1.创建张量
      • 2.属性与方法
      • 3.numpy转换
      • 4.维度变换
      • 5.运算操作
    • 三、自动求导
    • 四、模型保存
    • 五、模型定义
      • 1.层连接
      • 2.损失函数
      • 3.优化器
    • 总结


    前言

    记录一些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)
    全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)
    
    • 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数组基本一致。模型保存只保存参数,加载时需要重新定义模型。采用继承类的形式来定义模型,在初始化中设置模型参数,在方法中进行前向传播,注意按层要求修改数据形状。

  • 相关阅读:
    干货 | 背熟这些 Docker 命令,面试再也不怕啦~
    云计算与大数据
    isset()函数判断变量是否设置且非NULL
    CEC2013(MATLAB):​白鲸优化算法(Beluga whale optimization,BWO)​求解CEC2013
    【产品经理】APP备案(阿里云)
    深度学习模型相关部署的学习:(yolov5)WIN10+CUDA11.3+TensorRT
    初入算法(1)—— 进入算法世界
    python 性能优化实例练习
    Java msyql批量插入 十万条数据
    9月18日作业
  • 原文地址:https://blog.csdn.net/qq_53715621/article/details/133513207
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号