卷积神经网络|猫狗分类系列--构建自己的模型

文摘   科技   2023-04-28 19:19   河南  

在上一篇文章:卷积神经网络|猫狗分类系列--导入kaggle猫狗数据集,我们已经成功导入了kaggle猫狗数据集,也就是说,数据的预处理工作已经完成,而接下来就到了构建模型阶段。

建立一个神经网络模型是比较简单的,只要了解各层的含义,不同层之间参数的传...,有了这些预备知识,那么一个完整的网络模型就可以被很容易地构建出来。

就像这样:

# 创建网络class Network(nn.Module):    def __init__(self):        super(Network,self).__init__()        self.conv1 = nn.Conv2d(in_channels=3, out_channels=6, kernel_size=5)        self.conv2 = nn.Conv2d(in_channels=6, out_channels=12, kernel_size=5)        self.fc1 = nn.Linear(in_features= 12*4*4, out_features=120)        self.fc2 = nn.Linear(in_features= 120, out_features=60)        self.out = nn.Linear(in_features=60, out_features=2)        def forward(self, t):        t = t        t = F.relu(self.conv1(t))        t = F.max_pool2d(t, kernel_size =2, stride=2)        t = F.relu(self.conv2(t))        t = F.max_pool2d(t, kernel_size=2, stride=2)        t = t.reshape(-1, 12*4*4)        t = F.relu(self.fc1(t))        t = F.relu(self.fc2(t))        t = self.out(t)        return t

当然,这个网络模型结构非常简单,仅仅有两个卷积层和三个全连接层构成,对于我们的实际任务效果可能非常差,但并没有关系,因为我们已经知道一个大致的网络模型是什么样。

既然模型的构建非常简单,实际上,你也可以自己构建一个模型,自己定义卷积层,全连接层的数量,以及在何处使用激活操作和池化操作,但要格外注意参数的设置,因为参数错误会导致整个模型不能工作。


在自己尝试之后,再了解那些十分经典的模型的结构,那么这个过程将是十分有益的。

在下一节,我们将使用经典的预训练好的VGG模型,并在此基础上进行微调,使之可以用来完成猫狗分类任务。








点击"在看"了解更多精彩内容



math and code
计算机专业研究生在读,拥有深厚的计算机科学和数学背景,对编程、算法、数据结构、深度学习等领域都有着深入的了解和实践经验。对编程语言的掌握熟练而全面,无论是主流的Python、Java,还是强大的C++、Go,都能轻松驾驭。