当前位置: 首页 > 游戏攻略 > 深度学习中的开山之作:AlexNet网络结构与猫狗分类任务复现

深度学习中的开山之作:AlexNet网络结构与猫狗分类任务复现

来源:网络 作者:趣玩小编 发布时间:2024-06-12 08:59:12

作为深度学习的开山之作AlexNet,给后来的研究者们带来了很大的启发。它首次在两块GTX 580 GPU上做神经网络,并且在2012年ImageNet竞赛中取得了冠军。这一成就为深度学习的兴起奠定了重要基础,也为现在的显卡公司NVIDIA的市值超越苹果贡献了一份功劳。

下面将介绍AlexNet的网络结构和论文复现。实验内容为使用AlexNet网络进行猫狗分类任务,包括模型搭建、训练、测试以及结果分析。

网络结构

AlexNet的网络一共有8层,前5层是卷积层,剩下3层是全连接层。具体结构如下:

第一层至第五层为卷积层,分别进行卷积和池化操作。第六至第八层为全连接层,最终输出softmax为1000,对应ImageNet竞赛的分类个数。

数据集

实验使用的数据集为包含猫狗图片的数据集,其中猫的图片有12500张,狗的图片也有12500张。训练数据集包括猫和狗各12300张,验证集和测试集各包括猫和狗各100张。数据集链接: https://pan.baidu.com/s/11UHodPIHRDwHiRoae_fqtQ 提取码:d0fa。

数据集分类

将数据集中的猫和狗分别放在train_0和train_1文件夹中。

import os
import re
import shutil

origin_path = '/workspace/src/how-to-read-paper/dataset/train'
target_path_0 = '/workspace/src/how-to-read-paper/dataset/train_0/0'
target_path_1 = '/workspace/src/how-to-read-paper/dataset/train_0/1'

os.makedirs(target_path_0, exist_ok=True)
os.makedirs(target_path_1, exist_ok=True)

file_list = os.listdir(origin_path)

for i in range(len(file_list)):
    old_path = os.path.join(origin_path, file_list[i])
    result = re.findall(r'\w+', file_list[i])[0]
    if result == 'cat':
        shutil.move(old_path, target_path_0)
    else:
        shutil.move(old_path, target_path_1)

模型搭建

进行模型搭建和数据导入:

import torch
# 其他相关库的导入

# 超参数设置
# 卷积层和全连接层的定义
# 训练集、测试集、验证集的导入
# 归一化处理
# 数据加载器的设置

训练

进行模型训练:

# 定义模型
# 优化器的选择
# 训练集训练
# 验证集进行验证
# 开始训练

测试

进行模型测试:

# 验证集的test_loss
# 取最好的模型进行测试
# 输出测试集准确率

实验结果分析

实验结果显示,使用最优的模型进行测试时,测试集的准确率分别为89.0%和91.5%。从实验结果可以看出,模型在epoch=20时已经表现良好。为了训练一个更好的模型,可以尝试数据增强、使用正则化项、噪声注入等方法。

注:本实验代码地址

相关攻略
热门推荐 更多 +
休闲益智 | 945.71MB
我的世界是一款风靡全球的3D第一人称沙盒...
9.6
角色扮演 | 878.96MB
最新版《汉家江湖》是一款以武侠为题材、以...
9.5
飞行射击 | 262.79MB
《荒野乱斗》是快节奏射击类多人对战游戏。...
9.5
飞行射击 | 102.9M
掌上飞车手游app是由腾讯特别为QQ飞车...
9.2
休闲益智 | 263.56MB
开心消消乐是一款轻松休闲的手游,也是一款...
9.6