IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【pytorch学习笔记】01-安装与基础使用 -> 正文阅读

[Python知识库]【pytorch学习笔记】01-安装与基础使用

pytorch安装&使用

  • 简单、高效、扩展性好
  • 在学术研究领域较多

安装

  • 安装python
  • 查看电脑配置,按自己的需求选择对应版本(cpu,gpu,python版本等)
  • 使用指令 复制Run this Command内容执行即可
    在这里插入图片描述

pytorch基础知识

张量

  • pytorch基本运算单元,与数学上的使用,内容有不同
  • 0阶为scalar,1阶为vector,二阶为matrix
  • 其本质是一种多重线性映射关系,坐标分布在多维空间内,拥有多个分量的量。

pytorch中的使用

  • 存储和变换数据的主要工具
  • 和numpy非常相似,但提供GPU计算和自动梯度等功能
tensor创建
import torch
#常见Tensor创建方式
## 快速初始化
###创建全0or1\对角矩阵,可使用dtype进行类型设置,默认为float
t1 = torch.zeros(4,3,dtype=torch.int)
t2 = torch.ones(4,3)
t3 = torch.eye(4,4)
t4 = torch.rand(4,3)#随机 rand服从均匀分布,randn服从标准正态分布
# print(t1,t2,t3,t4)
###直接构建
t1 = torch.Tensor(6,4,5)#按搞定的尺寸构建,3个维度(6,4,5)
t2 = torch.tensor([5.5,3])#按数据构建
# print(t1,t2)
### 函数构建
t1 = torch.arange(0,10,2)#从0-9,步长为1构建,默认为1
t2 = torch.linspace(0,10,5)#从0-10,均分为2块
t3 = torch.normal(mean=0.5,std=torch.arange(1.,6.))#生成正态分布张量
t4 = torch.randperm(7)#生成0-7的随机排列tensor
# print(t4)
###基于已有的tensor创建新的tensor
t1 = t1.new_ones(4,3)#与旧的tensor具有相同的dtype和device
# print(t1)
t1 = torch.randn_like(t1,dtype=torch.float)#重置数据类型与数据
print(t1)
print(t1.size(),t1.shape)#查看尺寸
tensor操作
#张量的相关操作
##加法
y = torch.randn(4,3)
x = torch.randn(4,3)
# print(x+y)#方式1
# print(torch.add(x,y))#方式2
# print(y.add(x))#方式3
##索引 --与numpy基本一致
# print(x[:,1])
##维度转换 view与reshape
x = torch.randn(4,4)
y = x.view(16)#4*4变为1*16 会改变原始张量 reshape不会改变但不能保证输出是拷贝值
z = x.view(-1,8)#-1代表这一维的维数由其他维度决定 此处为2*8
###不影响原始张量
x = torch.randn(4,4)
x2 = x.clone()
print(id(x),id(x2))#克隆副本
### squzee与unsqueeze  删去维数为1的维度/给指定位置增加维数为1的维度
x = torch.unsqueeze(x,2)#指定位置添加维数为1的维度
x = torch.unsqueeze(x,1)
print(x.shape)
x = torch.squeeze(x,1)#去掉指定位置维数为1的维度,不指定位置则全去除
print(x.shape)

tensor广播机制
#广播机制
##两个形状不同的tensor按元素运算时,“可能”触发广播机制
# x = torch.arange(1,5)
# y = torch.arange(1,9).view(4,2)#这样是不会触发的
# print(x)
# print(x+y)

x = torch.arange(1, 3).view(1, 2)
print(x)
y = torch.arange(1, 4).view(3, 1)
print(y)
print(x + y)#这样可以

自动求导

  • 目的:快速求解偏导
  • 神经网络的核心:autograd(为张量上的所有操作提供自动求导机制)
  • tensor中有一个属性为requires_grad,默认为False 设定为True后将追踪对于该张量的所有操作
#autograd包
#1、一个张量只有属性.requires_grad设定为True,才会程序才会追踪对于该张量的所有操作,对于已建立的张量
#使用.requires_grad_()来更改
#2、进行函数计算后z=f(x,y) 使用.backward()就会自动计算所有梯度(注:为标量时不需要传入任何参数)
#3、阻止一个张量被跟踪历史,可以调用.detach()将其与计算历史分离,并阻止它未来的计算记录被跟踪
#还可以被包装在with torch.no_grad():中,防止冗余计算
#4、Function类,与Tensor互相连接生成无环图,编码了完整的计算历史,反应为张量属性:.grad_fn
from __future__ import print_function
import torch
x = torch.randn(3,3,requires_grad=True)
# print(x.grad_fn)
y = x**2
#y.backward()因为不是标量所以不能不加参数
y.backward(gradient=torch.randn(3,3))#如此添加参数
# print(x.grad)
# print(y.dim())
#梯度
#1、每一次反向传播,梯度都会累加之前的梯度
x = torch.ones(2,2,requires_grad=True)
y = x**2
out = (y*y*3).mean()
out.backward()
# print(x.grad)
out1 = x.sum()
out1.backward()
# print(x.grad)
x.grad.data.zero_()#清空积累的梯度
out2 = x.sum()
out2.backward()
# print(x.grad)
##防止跟踪
with torch.no_grad():
    print((x**2).requires_grad)
##希望修改tensor的数值,但又不希望autograd记录
x = torch.ones(1,requires_grad=True)
print(x.data) # 还是一个tensor
print(x.data.requires_grad) # 但是已经是独立于计算图之外
y = 2 * x
x.data *= 100 # 只改变了值,不会记录在计算图,所以不会影响梯度传播
y.backward()
print(x.data) # 更改data的值也会影响tensor的值 
print(x.grad)
##.data与.detach的不同点与相同点
##相同点
###-都和x共享同一块数据
###-都和x的计算历史无关
###-requires_grad=False
##不同点
###-data对数据的保护不及detach

并行计算

  • 目的是提高效率,减少训练时间
  • 涉及cuda的使用,GPU的调用,对于CPU就是进程的调用
常见的方法:
  • 网络结构分布到不同不同的设备中
  • 同一层的任务分布到不同设备中
  • 不同数据分布到不同设备中
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 01:58:19  更:2022-09-15 01:59:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 14:13:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计