模型的内容03 Class Net

进入主程序前,我们先看class 大块

Class Net:神经网路的定义处。

class Net(nn.Module):
    def __init__(self, hidden_size):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 20, 5, 1)
        self.conv2 = nn.Conv2d(20, 50, 5, 1)
        self.fc1 = nn.Linear(4*4*50, hidden_size)
        self.fc2 = nn.Linear(hidden_size, 10)
    def forward(self, x):
        x = F.relu(self.conv1(x))
        x = F.max_pool2d(x, 2, 2)
        x = F.relu(self.conv2(x))
        x = F.max_pool2d(x, 2, 2)
        x = x.view(-1, 4*4*50)
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return F.log_softmax(x, dim=1)

这里,我们定义了一个class,名字叫Net。
注意: 在模型中必须要定义 forward 函数。而backward 函数(用来计算梯度)会被autograd自动创建。 可以在 forward 函数中使用任何针对 Tensor 的操作。

<<init 部分>>

  • Conv1:二维卷积层, 输入为黑白的,所以RGB通道为1(HxWxC =28x28x1),输出通道为20, 卷积核大小为5x5,跨步为1。
  • Conv2:依照conv1类推。请注意,conv1 output chennel,为conv2 input chennel。
  • fc1: an affine(仿射) operation: y = Wx + b 。 全连接层fc1: 线性层, 输入feature 4x4x50,输出feature 为hidden_size。请注意,50,为conv2 output chennel。
  • Fc2: 类推fc1。输出feature 为 10。(对应数字0..9)

<<forward 部分>>

  • 输入HxWxC =28x28x1图片,进入神经层conv1。再进入矫正函数ReLU,将负数全部归0。Output tensor: 24x24x20。
  • 进入max_pool2d函数。(x, 2, 2)表示取2x2的方形kernnel,每次跨两步。在每次的2x2的方形kernnel中,取最大值。Output tensor: 12x12x20
  • (12x12x20),进入神经层conv2。。再进入矫正函数ReLU,将负数全部归0。Output tensor: 8x8x50。
  • (8x8x50)进入max_pool2d函数。Output tensor: 4x4x50。
  • x.view(-1, 4x4x50)表示将x转变成2维平面(r,c),c = 4x4x50,-1表示剩余的都给r (所有元素除以[4x4x50])。其实,此时r =1,所以变成长条!
  • x = F.relu(self.fc1(x)):x进入fc1而後再矫正负数为0(ReLU)。
  • x = self.fc2(x):我们已经矫正过了,所以不须再次矫正。
  • 回覆函数值:return F.log_softmax(x, dim=1)。以[概率]的形式表达[0..9]哪个数字最有可能。此处,dim=1,表示每行进行softmax运算,让每行和为1,再将每个元素取log值。

图示如下:

https://ithelp.ithome.com.tw/upload/images/20210928/20141491uvDddRVDLw.png

https://ithelp.ithome.com.tw/upload/images/20210928/20141491xO3ru0QyNX.png

https://ithelp.ithome.com.tw/upload/images/20210928/20141491NkwEAi8nXi.png
以上为神经网路的定义。
请继续看下回分解。


<<:  Day13 X CSS GPU Acceleration

>>:  大数据平台:分散式档案

[Day 25] vue-router路由传送参数 props

昨天做好了节庆活动的清单,但是目前只能看到大纲,没办法看到活动详情, 所以在渲染清单的同时,要帮他加...

响应式设计

元件自动侦测改变外观 现在网页应用程序越来越朝向「mobile first」设计,代表网站都要能支援...

Day 08:深仍可测的元件样式-Deep Selectors

成功渲染出 BootstrapVue Navbar 元件之後,接着来将预设样式改成自己喜欢的专案色调...

Day-6 Build a CPU

Build a CPU tags: IT铁人 抽象化设计 建构一台电脑时,他要能执行所有指定ISA的...

Day 18 - VRF 介绍

前几天将 VLAN 跟 PBR 设定完成了! 那今天来简单的介绍一下 VRF! 什麽是 VRF? V...