在pytorch中实现定义自己的CNN首先要继承torch.nn.Nodule,然后自己要定义两个函数,分别是构造函数和forward函数,构造函数中写的是你需要的卷积层池化层激活函数全连接层优化器等等,优化器是用来更新网络权重和参数的,forward函数要写数据向前传输经过的层的顺序、个数等,里面具体的卷积层、池化层等等的参数需要根据具体的数据集推敲。pytorch的backward函数是不需要自己定义的,在结果中调用backward(参数要填结果shape一样的值,通常用torch.ones_like(out)),backward函数会自己调用autograd,在反向传播前,先要将所有参数的梯度清零(注意),然后反向传播梯度。
以下罗列出常用的函数:
conv2d(in_channels,out_channels,kernal_size,stride,padding,dilation,groups,bias=True)
in_channels指输入通道数,
out_channels指输出通道数,
kernal_size指卷积核大小,kernal_size=n,即nxn,
stride指卷积核移动的步长,
padding指边界填充,一般填充0,作用是为了不使矩阵大小变小,
dilation指卷积核之间的间距,我不太懂
groups指从输入通道到输出通道的阻塞连接数,目前还没涉及,不太懂
bias指偏置,bias=True就是添加偏置,False就是不添加,默认True添加
conv2d用于二维矩阵(例如图像),conv1d是由conv2d实现
pytorch学习
最新推荐文章于 2021-03-21 15:48:55 发布