代码阅读笔记"/>
WCT2代码阅读笔记
- parser.add_argument
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的tensor
- torch.eye():为了生成对角线全1,其余部分全0的二维数组
- 对角阵S非零奇异值的个数= ATA非零特征值的个数=对称矩阵ATA的秩=A的秩。
更多推荐
WCT2代码阅读笔记
发布评论