深度学习入门笔记(7)——module
(1)搭建计算图:神经网络需要计算图,torch.nn提供层级结构和NLLoss之类的损失,nn.Module提供所有的模型框架,举一个博主最近搭建的网络例子:
pretrained_net = models.vgg16_bn(pretrained=False)
class FCN(nn.Module):
def __init__(self, num_classes):
super().__init__()
# 第一个下采样块,输出为浅层局部信息pooling1
self.stage1 = pretrained_net.features[:7]
.............................
.............................
.............................
.............................
def forward(self, x):
# 表示输入图片,对应image
s1 = self.stage1(x) # pooling1
.............................
.............................
.............................
.............................
output = self.conv_trans2(add2)
output = self.upsample_8x(output)
return output
这是一个用module搭建的计算图,中间代码与本章没啥关系,被博主隐去了,这个计算图会被不断调用,每次相当于做一次前向传播,当然,有前向就必定会有后向反馈,后向反馈不需要我们写,在层级里面已经包括,调用方式也很简单,在搭建网络时,我们会具体说一下。
(2)定义损失函数:
criterion = nn.NLLLoss().to(device)
简单解释一下,这里的device是之前搭建的运行环境,我们要保证网络可以正常运行,必须首先满足所有程序是在同一个环境运行的,这点十分重要,希望大家可以重视,在搭建网络时,我们也会具体说一下如何配置GPU优先的环境。
这里只是顺带提一下损失函数,针对损失函数的概念会在后面做讲解。