
如斯一番修改后,搭建的SK模型如下:
- class Net(nn.Module):
- def __init__(self):
- super(Net, self).__init__()
- self.conv1_1 = nn.Conv2d(1, 20, kernel_size=(3, 3), stride=(1, 1), padding=0)
- self.conv1_2 = nn.Conv2d(20, 20, kernel_size=(3, 3), stride=(1, 1), padding=0)
- self.conv2 = nn.Conv2d(20, 50, kernel_size=(3, 3), stride=(1, 1), padding=0)
- self.fc1 = nn.Linear(5*5*50, 500)
- self.fc2 = nn.Linear(500, 10)
- self.bn1_1 = nn.BatchNorm2d(20)
- self.bn1_2 = nn.BatchNorm2d(20)
- self.bn2 = nn.BatchNorm2d(50)
- self.bn3 = nn.BatchNorm1d(500)
- self.drop = nn.Dropout(p=0.5)
- def forward(self, x):
- x = F.relu(self.bn1_1(self.conv1_1(x)))
- x = F.relu(self.bn1_2(self.conv1_2(x)))
- x = F.max_pool2d(x, 2)
- x = self.conv2(x)
- x = F.max_pool2d(self.bn2(x), 2)
- x = x.view(-1, 5*5*50)
- x = self.fc1(x)
- x = F.relu(self.bn3(x))
- x = self.fc2(x)
- return F.log_softmax(x)
在20个epoch后,结不雅如下,
- SK: Test set: Average loss: 0.0008, Accuracy: 9848/10000 (98.5%)
测试集精确率获得了少许的进步。
这里应用2个3x3的卷积菏攀来代替大年夜的5x5卷积核,参数个数由5x5=25变为了2x3x3=18。实践注解,如许使得计算更快了,并且小的卷积层之间的ReLU也很有赞助。
VGG中就应用了这种办法。
问题F:Change Number of channels
经由过程将特点图大年夜小乘上一个倍数,再经由过程shell法度榜样履行,获得如下结不雅:
- SK0.2: 97.7%
- SK0.5: 98.2%
- SK1: 98.5%
- SK1.5: 98.6%
- SK2: 98.5% (max 98.7%)
在特点图分别为4,10, 30, 40时,最终的精确度根本是往上晋升的。这在必定程度上解释,在没有达到过拟合前,增大年夜特点图的个数,即相当于提取了更多的特点,提取特点数的增长有助于精度的进步。
推荐阅读
据媒体报道,为改进 Go 说话的开辟对象,Go 可能会获得本身的说话办事器,类似于 Microsoft 和 Red Hat 的说话办事器协定。消息是大年夜 Go 说话开辟者的评论辩论组中流出,所以这不是最>>>详细阅读
本文标题:利用Pytorch进行CNN详细剖析
地址:http://www.17bianji.com/lsqh/36741.html
1/2 1