pytorch神经网络的基本结构和使用

下面是子类化nn.Module来定义复杂神经网络的方法,省略了自写部分,其神经网络的固定结构部分如下:

import torch.nn as nn
import torch.nn.functional as F


class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        ...省略 #这里按数据流向的顺序定义各各层

    def forward(self, x): #覆盖基类的forward方法,该方法在类被实例化后并传参调用后会自动执行
        ...省略 #这里定义数据流的处理步骤
        return x #返回最终结果

下面是神经网张的定义和使用的实际示例:

import torch.nn as nn
import torch.nn.functional as F

import torch.optim as optim #用于定义优化器

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(3, 6, 5) #定义第一个卷积层
        self.pool = nn.MaxPool2d(2, 2) #定义一个池化层
        self.conv2 = nn.Conv2d(6, 16, 5) #定义第二个卷积层
       #定义三个全链接层
        self.fc1 = nn.Linear(16 * 5 * 5, 120)
        self.fc2 = nn.Linear(120, 84)
        self.fc3 = nn.Linear(84, 10)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = x.view(-1, 16 * 5 * 5)
        x = F.relu(self.fc1(x))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x

net = Net() #实例化网络

criterion = nn.CrossEntropyLoss() #定义一个损失函数
 #定义一个优化器,优化器的作用是根据损失函数的结果来更新模型的权重参数
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

#使用样本和标签训练网络
...

#使用测试数据测试网络
...

    原文作者:箭雨
    原文地址: https://zhuanlan.zhihu.com/p/55305982
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞