赞
踩
对由多个输入平面组成的输入信号应用 2D 卷积。
class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')¶
eg:
self.conv1 = torch.nn.Conv2d(3, 16, 5)
# 表明输入为3通道图像,输入为16通道图像,卷积层核为5*5大小
由于计算机视觉大红大紫,二维卷积用处是最广的。一维、二维和三维其实差不了多少,这里主要标重一下conv2d和conv3d的区别:
在由多个输入平面组成的输入信号上应用 2D 最大合并。
class torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)¶
eg:
self.pool1 = nn.MaxPool2d(2, 2)
# 池化核尺寸2*2,步长为2,每隔两个值做一次
经过池化层后,数据仍然是一个三维的Tensor(),需要先经过展平再传到全连接层:
x = x.view(-1, 32*5*5) # output(32*5*5)
# 将x展平,-1表示自动推理patch,32*5*5表示展平的向量大小
对输入数据采用线性变换。
class torch.nn.Linear(in_features, out_features, bias=True)¶
eg:
self.fc1 = nn.Linear(32*5*5, 120)
# 输入样本大小为32*5*5,输出为120大小
class torch.nn.ReLU(inplace=False)
# 为可重复性设置一个随机种子
myseed = 42069
# 确定性卷积,如果设置为True,每次返回的卷积算法将是确定的。如果配合上设置随机种子为固定值可以保证每次运行网络时相同输入对应输出是固定的。
torch.backends.cudnn.deterministic = True
# 如果为True,会对模型的卷积层进行预先的优化,也就是在所有卷积实现算法中选择最快的。适用于非动态变化的网络结构(网络的输入是固定的)
torch.backends.cudnn.benchmark = False
# deterministic = True和benchmark = false搭配使用最终结果是固定的。
np.random.seed(myseed)
torch.manual_seed(myseed)
if torch.cuda.is_available():
# 设置用于在所有 GPU 上生成随机数的种子。如果 CUDA 不可用,调用此函数是安全的;在这种情况下,它会被默默地忽略。
torch.cuda.manual_seed_all(myseed)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。