Pytorch笔记1

建议点赞收藏关注!持续更新至pytorch大部分内容更完。

整体框架如下

目录

gpu加速

打开jupyter lab,打开一个file,右上角选择kernel为torchgpuprivate

要在 Mac M1的GPU 上运行 PyTorch 代码,使用命令 torch.device("mps")来指定。

之后就只需要引用gpu_a,gpu_b,其他与cpu_a...的操作没有区别。

数据

数据结构

张量Tensor

  1. ==数组概念,1...n维
  2. 有8个属性
    data
    dtype:有很多数据类型
    shape : 如 (6,6,6,6)
    device:所在设备cpu/gpu
    grad:data的梯度
    grad_fn:创建tensor 的function,是自动求导的关键,加法还是乘法
    requires_grad:指示是否需要梯度,不一定所有的张量都需要设置梯度
    is_leaf:指示是否是叶子节点(张量),计算图中再介绍。
  3. api
python 复制代码
device=torch.device("mps")
torch.tensor(
			data, #list or numpy
			dtype=None, # 默认==data的类型
			device=None,
			requires_grad=False,
			pin_memory=False # 是否存于锁页内存 一般默认
			)

#创建
arr=np.ones((3,3))
t=torch.tensor(arr,device=device) 
# t.dtype == arr.dtype==float64

torch.from_numpy(ndarray) #从numpy创建tensor
#从torch.from_numpy创建的tensor与原来的ndarray共享内存,一改跟着改

torch.zeros(*size,#形状 如(3,3)
			out=None,#输出的张量 相当于赋值
			dtype=None,#内存中的布局形式
			layout=torch.strided,#通常默认,除非稀疏矩阵 用sparse_coo
			device=None,
			requires_grad=False)
torch.zeros_like(input,#根据Input的形状创建
				dtype=None,
				layout=None,
				device=None,
				requires_grad=False)

zeros 换成 ones

torch.full(size,#(3,3)
		   fill_value,#张量的值 如10
		   out=None,
		   dtype=None,
		   layout=torch.strided,
		   device=None,
		   requires_grad=False)

torch.arange(start=0, #创建等差1维张量
			end, #左闭右开
			step=1,#公差 默认1
			out=None,
		   dtype=None,
		   layout=torch.strided,
		   device=None,
		   requires_grad=False)

torch.linspace(start=0, #创建均分1维张量
			end, #左闭右闭
			steps=1,#数列长度
			#步长=(end-start)/step -1
			out=None,
		   dtype=None,
		   layout=torch.strided,
		   device=None,
		   requires_grad=False)

torch.logspace(base=...底默认10,...) #对数均分

torch.eye(n,#行数  #默认方阵
		  m,#列数
		  ...
		) #创建单位对角矩阵,2维张量,

torch.normal(mean,std,out=None)
#正态分布,mean均值,std方差
#mean std都可以分别是标量 or张量

#都是张量的情况的normal如何计算?
mean=[1,2,3,4]
std=[1,2,3,4]
t_normal=torch.normal(mean,std) #得到[1.66,2.53,3.18,6.48]
#1.66是通过mean=1,std=1的正态分布采样得到

torch.randn(*size, #标准正态分布  
			out=None,
			dtype=None,
			layout=torch.strided,
			device=None,
		   requires_grad=False)
torch.randn_like()

torch.randint(low=0, #均匀分布 前闭后开
			high,
			size, 
			out=None,
			dtype=None,
			layout=torch.strided,
			device=None,
		   requires_grad=False) 

torch.randint_like()

torch.randperm(n,#张量长度
			out=None,
			dtype=None,
			layout=torch.strided,
			device=None,
		   requires_grad=False) 
#生成0-n-1随机排列

torch.bernoulli(input,
				*,
				generator=None,
				out=None)
 #以input为概率,生成伯努利分布,即0-1分布,两点分布

Variable

已经合并到tensor 但是对于理解张量有帮助。variable是torch.autograd中的数据类型,用于封装tensor进行自动求导,有五个属性

data:被包装的tensor

grad:data的梯度

grad_fn:创建tensor 的function,是自动求导的关键,加法还是乘法

requires_grad:指示是否需要梯度,不一定所有的张量都需要设置梯度

is_leaf:指示是否是叶子节点(张量),计算图中再介绍。

预处理

数据增强

模型

构建模块

组织复杂网络

初始化网络参数

定义网络层

损失函数

创建损失函数

设置损失函数超参数

选择损失函数

优化器

管理模型参数

管理多个参数组实现不同学习率

调整学习率

迭代训练

观察训练效果

绘制loss/accuracy曲线

用TensorBoard分析

模型应用

图像分类

图像分割

目标检测

对抗生成

循环网络

相关推荐
车轮滚滚__4 分钟前
uniapp对接unipush 1.0 ios/android
笔记
IT古董1 小时前
【漫话机器学习系列】017.大O算法(Big-O Notation)
人工智能·机器学习
凯哥是个大帅比1 小时前
人工智能ACA(五)--深度学习基础
人工智能·深度学习
m0_748232921 小时前
DALL-M:基于大语言模型的上下文感知临床数据增强方法 ,补充
人工智能·语言模型·自然语言处理
szxinmai主板定制专家1 小时前
【国产NI替代】基于FPGA的32通道(24bits)高精度终端采集核心板卡
大数据·人工智能·fpga开发
海棠AI实验室1 小时前
AI的进阶之路:从机器学习到深度学习的演变(三)
人工智能·深度学习·机器学习
机器懒得学习2 小时前
基于YOLOv5的智能水域监测系统:从目标检测到自动报告生成
人工智能·yolo·目标检测
QQ同步助手2 小时前
如何正确使用人工智能:开启智慧学习与创新之旅
人工智能·学习·百度
AIGC大时代2 小时前
如何使用ChatGPT辅助文献综述,以及如何进行优化?一篇说清楚
人工智能·深度学习·chatgpt·prompt·aigc
流浪的小新2 小时前
【AI】人工智能、LLM学习资源汇总
人工智能·学习