pytorch学习笔记一:作用、安装和基本使用方法、自动求导机制、自制线性回归模型、常见tensor格式、hub模块介绍

news/2024/11/14 12:51:14/

文章目录

    • 一、安装
    • 二、基本使用方法
      • ①创建一个矩阵
      • ②获得随机值
      • ③初始化全零矩阵
      • ④直接传入数据
      • ⑤构建矩阵,然后随机元素值
      • ⑥展示矩阵大小
      • ⑦矩阵计算
      • 8、取索引
      • 9、view操作:改变矩阵维度
      • 10、与numpy的协同操作
    • 三、自动求导机制
      • 1)定义tensor成可求导的
      • 2)演示框架进行反向传播流程
      • 3)反向传播计算(由z对其他求导)
    • 四、做一个线性回归模型
      • ①输入数据并转成矩阵格式(注意这里的格式不是tensor而是np.array)
      • ②输入y,这里y=2x+1
      • ③导入torch
      • ④线性回归模型代码
      • ⑤执行好参数和损失函数
      • ⑥开始训练模型
      • ⑦测试模型预测结果
      • ⑧模型的保存于读取
      • ⑨用gpu进行训练
    • 五、常见tensor格式
      • 1)scalar介绍
      • 2)vector:特征,比如身高、体重、年龄,形成一种人的特征(多个值)
      • 3)Matrix:矩阵,一般都是多维
      • 4)n-dimensional tensor
    • 六、Hub模块介绍
      • 1)通用github介绍使用地址

pytorch作用:能在GPU中做矩阵运算

一、安装

①cpu和gpu版本的pytorch安装
在这里插入图片描述

import torch
torch.__version__
  • 输出
'1.3.0+cpu'

②安装cuda tookit(记得cuda版本和pytorch对应上)
在这里插入图片描述

二、基本使用方法

①创建一个矩阵

x = torch.empty(5,3)
x

在这里插入图片描述

②获得随机值

x = torch.rand(5,3) #5行3列矩阵
x

在这里插入图片描述

③初始化全零矩阵

x = torch.zeros(5,3,dtype=torch.long)
x

在这里插入图片描述

④直接传入数据

x = torch.tensor{[5.5,3]}
x

在这里插入图片描述

⑤构建矩阵,然后随机元素值

在这里插入图片描述

⑥展示矩阵大小

x.size()

在这里插入图片描述

⑦矩阵计算

y = torch.rand(5,3)
x + y 或 torch.add(x,y)

在这里插入图片描述

8、取索引

x[:,1]

在这里插入图片描述
这里x是这个
在这里插入图片描述

9、view操作:改变矩阵维度

x = torch.randn(4,4)
y = x.view(16)
z = x.view(-1,8)  #-1表示自动取计算

在这里插入图片描述

10、与numpy的协同操作

  • tensor转换成numpy的支持格式
a = torch.ones(5)
b = a.numpy()
b

在这里插入图片描述

  • numpy转tensor的操作
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
b

在这里插入图片描述

三、自动求导机制

1)定义tensor成可求导的

x = torch.randn(3,4,requires_grad=True)
x
或
x = torch.randn(3,4)
x.requires_grad=True
x

在这里插入图片描述

2)演示框架进行反向传播流程

①先相加计算,并调用sum接口
在这里插入图片描述

②开始反向传播

y.backward()
b.grad

在这里插入图片描述
可以看到对b求导就得1
③看requires_grad是true还是false(前面backward用到来求导就为true)
在这里插入图片描述
在这里插入图片描述
计算流程
在这里插入图片描述
查看叶子
在这里插入图片描述

3)反向传播计算(由z对其他求导)

注意:
不清零梯度默认累加,可以看到对z对b求导可以一直累加1
在这里插入图片描述

四、做一个线性回归模型

①输入数据并转成矩阵格式(注意这里的格式不是tensor而是np.array)

在这里插入图片描述

②输入y,这里y=2x+1

在这里插入图片描述

③导入torch

import torch
import torch.nn as nn

④线性回归模型代码

写出类和构造函数,这里继承nn.module模块类
在这里插入图片描述

构建输入和输出参数
在这里插入图片描述

⑤执行好参数和损失函数

1、按照1000次一个batch来训练
2、指定学习率.0.01
3、指定优化器SGD
4、指定优化器优化参数,也就是model.parameters()
5、指定损失函数MSELoss(计算真实值和预测值之间的误差)

⑥开始训练模型

1、把numpy格式转为tensor格式
2、梯度要清零每次迭代
3、前向转播
4、计算损失
5、反向传播(把梯度求出来但是没进行权重参数更新)
6、更新权重参数(每隔50次打印下损失值)
在这里插入图片描述
在这里插入图片描述

⑦测试模型预测结果

得出结果再转为numpy
在这里插入图片描述

⑧模型的保存于读取

torch.save(model.state_dict(), 'xxx')
model.load_state_dict(torch.laod('model.pkl'))

在这里插入图片描述

⑨用gpu进行训练

这里圈出来的是,如果cuda版本合适用GPU跑,不然用cpu跑
在这里插入图片描述
传到gpu设备训练
在这里插入图片描述

五、常见tensor格式

1)scalar:一个数值
2)vector:向量
3)matrix:矩阵
4)n-dimensional tensor 高纬度数据

1)scalar介绍

在这里插入图片描述

2)vector:特征,比如身高、体重、年龄,形成一种人的特征(多个值)

词向量:用多维的向量数值表达一个词的意思
在这里插入图片描述

3)Matrix:矩阵,一般都是多维

在这里插入图片描述

4)n-dimensional tensor

在这里插入图片描述

六、Hub模块介绍

  • 介绍
    调用别人训练好的模型
  • 举例
    ①比如说选择对象识别的模型
    在这里插入图片描述
    ②点开实验环境
    在这里插入图片描述

③会有怎么使用的介绍
在这里插入图片描述

1)通用github介绍使用地址

在这里插入图片描述

在这里插入图片描述

有很多模型使用说明

在这里插入图片描述


http://www.ppmy.cn/news/1527892.html

相关文章

汇编(实现C语言程序的调用)

一、ARM汇编指令 mov: 将一个值或寄存器的内容移动到另一个寄存器中。这个指令可以用来赋值。 示例:mov r0, #5 // 将立即数 5 移动到寄存器 r0 add: 执行加法操作,将两个操作数相加,并将结果存储在目标寄存器中。 示例:add r0, …

malloc函数内存分配原理

malloc 是一个库函数&#xff0c;在<stdlib.h> 头文件中,是在程序的运行时库&#xff08;Runtime Library&#xff09;中实现的。这个函数主要用于在程序运行期间动态地分配内存。当在 C 语言程序中使用 malloc 时&#xff0c;实际上是在调用运行时库提供的一个函数&…

jmeter 录制APP脚本

一、手机 1、修改网络 代理选择手动→填写服务器主机名&#xff08;电脑IP&#xff0c;如&#xff1a;192.1xx.x.xx&#xff09;→服务器端口&#xff08;任意未被占用端口&#xff0c;如&#xff1a;8888&#xff09; 2、安装证书 手机浏览器访问服务器主机名:服务器端口&a…

linux 解压缩

1、tar命令 # 压缩文件 file1 和目录 dir2 到 test.tar.gz tar -zcvf test.tar.gz file1 dir2 # 解压 test.tar.gz&#xff08;将 c 换成 x 即可&#xff09; tar -zxvf test.tar.gz # 列出压缩文件的内容 tar -ztvf test.tar.gz 释义&#xff1a;-z : 使用 gzip 来压缩和解压…

GPT对话知识库——串口通信的数据的组成?起始位是高电平还是低电平?如何用代码在 FreeRTOS 中实现串口通信吗?如何处理串口通信中的数据帧校验吗?

目录 1&#xff0c;问&#xff1a; 1&#xff0c;答&#xff1a; 串口数据的组成 串口数据传输帧的完整结构 起始位的电平状态&#xff1a;低电平 举例&#xff1a;UART数据传输的例子 适用场景 总结 2&#xff0c;问&#xff1a; 2&#xff0c;答&#xff1a; a. 如…

滚雪球学SpringCloud[4.2讲]: Zuul:Netflix API Gateway详解

全文目录&#xff1a; 前言4.2 Zuul&#xff1a;Netflix API GatewayZuul的基础配置与使用引入Zuul依赖启用Zuul配置路由规则 Zuul的过滤器机制编写自定义过滤器 与Spring Security的集成配置Spring Security结合Zuul过滤器进行认证 实例案例&#xff1a;使用Zuul保护微服务 预…

【软考】数据字典(DD)

目录 1. 说明2. 数据字典的内容2.1 说明2.2 数据流条目2.3 数据存储条目2.4 数据项条目2.5 基本加工条目 3. 数据词典管理4. 加工逻辑的描述4.1 说明4.2 结构化语言4.3 判定表4.3 判定树 5. 例题5.1 例题1 1. 说明 1.数据流图描述了系统的分解&#xff0c;但没有对图中各成分进…

七种d3dcompiler_47.dll缺失怎么修复的方法,教你轻松解决d3dcompiler_47.dll缺失!

d3dcompiler_47.dll是 DirectX 的一部分&#xff0c;用于编译 Direct3D 着色器。如果这个文件缺失或损坏&#xff0c;可能会导致某些游戏或应用程序无法正常运行。以下是七种修复d3dcompiler_47.dll缺失问题的方法&#xff0c;教你轻松解决d3dcompiler_47.dll缺失&#xff01; …