目录
一、配置环境
-
安装anaconda
-
创建anaconda虚拟环境
-
在环境下安装依赖(注意torch和cuda的版本要匹配,否则不能调用GPU)
二、模型创建
设计一个可以用于图像分类的卷积神经网络,首先明确输入的size大小为24*24的灰度图像,在此基础上使用公式
计算在前向传播的过程中,图片的尺寸变化,其中p是padding,k是kernel的边长,s是stride
我这里简单设计了一个卷积模型如下:
# 定义网络
class CustomNet(nn.Module):
def __init__(self):
super(CustomNet, self).__init__()
self.features = nn.Sequential(
# inputsize is 1 * 24 * 24
nn.Conv2d(1, 16, 3, 2, 1), # 输入通道 1(灰度图像),输出通道 16
nn.ReLU(),
# 16 * 12 * 12
nn.Conv2d(16, 32, 5, 1, 2),
nn.ReLU(),
# 32 * 12 * 12
nn.MaxPool2d(2, 2),
# 32 * 6 * 6
nn.Conv2d(32, 20, 5, 1, 2),
nn.ReLU()
# 20 * 6 * 6
)
self.fc = nn.Sequential(
nn.Linear(20 * 6 * 6, 30),
nn.ReLU(),
# 20 * 6 * 6 -> 30
nn.Linear(30, 10),
# 30 -> 10
nn.Softmax(dim=1) # 改为 dim=1,因为 Softmax 需要指定维度
)
def forward(self, x):
x = self.features(x)