argparse 是 Python 内置的一个用于命令项选项与参数解析的模块
我们先来看一个简单示例。主要有三个步骤:
创建 ArgumentParser() 对象调用 add_argument() 方法添加参数使用 parse_args()解析添加的参数 numpy.ones()np.ones((1, 2))代表一行两列 输出:
[[1. 1.] [ 1. 1.]]unsqueeze函数:该函数用来增加某个维度,unsqueeze(0)就代表在最外层增加一个维度
nn.Conv2d():二维卷积
nn.Conv2d(in_channels,out_channels,kernel_size,stride,padding) 前三个参数必须手动提供,后面有参数 在Pytorch的nn模块中,不需要手动定义网络层的权重和偏置in_channels:输入张量的channels数 out_channels:输出张量的channels数(=滤波器的数量) kernel_size:卷积核的大小(滤波器的通道数=in_channels) stride:步长,默认1 padding:图像填充,默认0
requires_grad:是Pytorch中通用数据结构Tensor的一个属性,用于说明当前量是否需要在计算中保留对应的梯度信息,默认false不保留expand():这个函数的作用就是对指定的维度进行数值大小的改变。只能改变维大小为1的维,否则就会报错。不改变的维可以传入-1或者原来的数值。super()._ init _()需要继承父类构造函数中的内容,且子类需要在父类的基础上补充时使用
nn.module来自定义网络层要实现一个自定义层大致分以下几个主要的步骤: 自定义一个类,继承自Module类,并且一定要实现两个基本的函数, 第一是构造函数__init__,实现层的参数定义 第二个是层的逻辑运算函数,即所谓前向计算函数forward函数。
skip connection(残差连接,跳跃连接)在比较深的网络中,解决在训练的过程中梯度爆炸和梯度消失问题。 思想就是将输出表述为输入和输入的一个非线性变换的线性叠加:G(x)=F(x)+ x
RELU激活函数激活函数的引入是为了增加神经网络模型的非线性 RELU: f(x) = max(0, x) 优点: 1)克服梯度消失的问题 2)加快训练速度 缺点: 1)输入负数,则完全不激活,ReLU函数死掉。 2)ReLU函数输出要么是0,要么是正数,也就是ReLU函数不是以0为中心的函数
torch.mm(a,b):矩阵相乘.div():对函数标准化torch.index_select(input, dim, index, out=None):在指定维度dim方向上从input中抽取由位置序列index所指定的值。output的其他维度的长度和原来矩阵相同,在第dim维度上的长度和index的长度相同。torch.mean(x,dim):dim=0,按行求平均值;dim=1,按列求平均值tensor.expand_as(x):是把一个tensor变成和x的tensortorch.eye():为了生成对角线全1,其余部分全0的二维数组对角阵S非零奇异值的个数= ATA非零特征值的个数=对称矩阵ATA的秩=A的秩。