模块创建的代码的展示

  1. import torch.nn as nn
  2. import torch.nn.functional as F
  3. class LeNet(nn.Module):
  4. #卷积网络的搭建
  5. def __init__(self):
  6. super(LeNet, self).__init__()
  7. self.conv1 = nn.Conv2d(3,16,5)#第一个参数表示上通道输入,16个卷积核,卷积核大小5x5
  8. self.pool1 = nn.MaxPool2d(2,2)#下采样层,也就是池化层
  9. self.conv2 = nn.Conv2d(16,32,5)
  10. self.pool2 = nn.MaxPool2d(2,2)
  11. #三层的全连接层
  12. self.fc1 = nn.Linear(32*5*5,120)
  13. self.fc2 = nn.Linear(120,84)
  14. self.fc3 = nn.Linear(84,10)
  15. #卷积网络的前景路线的定义
  16. def forward(self,x):
  17. x = F.relu(self.conv1(x))
  18. x = self.pool1(x)
  19. x = F.relu(self.conv2(x))
  20. x = self.pool2(x)
  21. x = x.view(-1,32*5*5)#将数据进行展平
  22. x = F.relu(self.fc1(x))
  23. x = F.relu(self.fc2(x))
  24. x = self.fc3(x)
  25. return x

在该函数中的数据的每一层的输入和输出的大小的关系如下图所示
image.png
该代码的实际意义与前面学习过的tensorflow的卷积神经网络的原理一模一样,只是写法上的差异,可以取参考之前的tensorflow和keras关于卷积神经网络的介绍

对于神经网络之中的batch_size参数的理解

对于过大的batch_size会给计算机带来十分巨大的计算量,增加计算机负担
而对于过于小的batch_size得到的结果的泛化程度不够,无法代表数据的一些特征值
所以要设置大小适中的batch_size值,表示每一批次处理的数据的量。

最终的结果展示

image.png
从最终的结果展示中可以看出,loss的之在不断的减小,而对应的accuracy在不断增加,使得模型训练的更加有效。