1.torch.nn简介
1.1torch.nn相关库的导入
12345678#环境准备import numpy as np # numpy数组库import math # 数学运算库import matplotlib.pyplot as plt # 画图库 import torch # torch基础库import torch.nn as nn # torch神经网络库import torch.nn.functional as F
1.2 torch.nn概述
Pytorch提供了几个设计得非常棒的模块和类,比如 torch.nn,torch.optim,Dataset 以及 DataLoader,来帮助程序员设计和训练神经网络。
nn是Neural Network的简称,帮助程序员方便执行如下的与神经网络相关的行为:
创建神经网络
训练神经网络
保存神经网络
恢复神经网络
包括五大基本功能模块
torch.nn是专门为神经网络设计的模块化接口
nn构建于auto ...
Pytorch
未读一、张量的基本操作
Pytorch 中,张量的操作分为结构操作和数学运算,其理解就如字面意思。结构操作就是改变张量本身的结构,数学运算就是对张量的元素值完成数学运算。
常使用的张量结构操作:维度变换(tranpose、view 等)、合并分割(split、chunk等)、索引切片(index_select、gather 等)。
常使用的张量数学运算:标量运算、向量运算、矩阵运算。
二、维度变换
2.1 squeeze vs unsqueeze 维度增减
squeeze():对 tensor 进行维度的压缩,去掉维数为 1 的维度。用法:torch.squeeze(a) 将 a 中所有为 1 的维度都删除,或者 a.squeeze(1) 是去掉 a中指定的维数为 1 的维度。
unsqueeze():对数据维度进行扩充,给指定位置加上维数为 1 的维度。用法:torch.unsqueeze(a, N),或者 a.unsqueeze(N),在 a 中指定位置 N 加上一个维数为 1 的维度。
squeeze 用例程序如下:
12345a = torch.rand(1,1,3,3)b ...
Pytorch
未读torch.mean()
mean()函数的参数:dim=0,按行求平均值,返回的形状是(1,列数);dim=1,按列求平均值,返回的形状是(行数,1),默认不设置dim的时候,返回的是所有元素的平均值。
torch.pow()
功能: 实现张量和标量之间逐元素求指数操作, 或者在可广播的张量之间逐元素求指数操作.
torch.stack()
官方解释:沿着一个新维度对输入张量序列进行连接。 序列中所有的张量都应该为相同形状。
注:python的序列数据只有list和tuple。
浅显说法:把多个2维的张量凑成一个3维的张量;多个3维的凑成一个4维的张量…以此类推,也就是在增加新的维度进行堆叠。
outputs = torch.stack(inputs, dim=?) → Tensor
torch.clamp()
torch.clamp(input, min, max, out=None) → Tensor
将输入input张量每个元素的夹紧到区间 [min,max][min,max],并返回结果到一个新张量。
torch.bmm()
计算两个tensor的矩阵乘法, ...
1 用法
Conv2d(in_channels, out_channels, kernel_size, stride=1,padding=0, dilation=1, groups=1,bias=True, padding_mode=‘zeros’)
2 参数
in_channels:输入的通道数目 【必选】
out_channels: 输出的通道数目 【必选】
kernel_size:卷积核的大小,类型为int 或者元组,当卷积是方形的时候,只需要一个整数边长即可,卷积不是方形,要输入一个元组表示 高和宽。【必选】
stride: 卷积每次滑动的步长为多少,默认是 1 【可选】
padding: 设置在所有边界增加 值为 0 的边距的大小(也就是在feature map 外围增加几圈 0 ),例如当 padding =1 的时候,如果原来大小为 3 × 3 ,那么之后的大小为 5 × 5 。即在外围加了一圈 0 。【可选】
dilation:控制卷积核之间的间距(什么玩意?请看例子)【可选】
groups:控制输入和输出之间的连接。(不常用)【可选】
...
Pytorch
未读Pytorch 学习率衰减方法
1.什么是学习率衰减
梯度下降算法需要我们指定一个学习率作为权重更新步幅的控制因子,常用的学习率有0.01、0.001以及0.0001等,学习率越大则权重更新。一般来说,我们希望在训练初期学习率大一些,使得网络收敛迅速,在训练后期学习率小一些,使得网络更好的收敛到最优解。
Pytorch中有两种学习率调整(衰减)方法:
(1)使用库函数进行调整;
(2)手动调整。
2.使用库函数进行调整
Pytorch学习率调整策略通过 torch.optim.lr_sheduler 接口实现。pytorch提供的学习率调整策略分为三大类,分别是:
(1)有序调整:等间隔调整(Step),多间隔调整(MultiStep),指数衰减(Exponential),余弦退火(CosineAnnealing);
(2)自适应调整:依训练状况伺机而变,通过监测某个指标的变化情况(loss、accuracy),当该指标不怎么变化时,就是调整学习率的时机(ReduceLROnPlateau);
(3)自定义调整:通过自定义关于epoch的lambda函数调整学习率(LambdaLR)。 ...