pytorch 卷积神经网络(alexnet)训练中问题以及解决办法(更新中)

上一篇博客中使用的是pytorch中的预训练模型效果较好。https://blog.csdn.net/pc1022/article/details/80440913这篇博客是自己训练 卷积神经网络,最开始以简单的alexnet进行训练。

对alexnet代码有三个版本的:

第一个版本是自己完全新建一个alexnet函数。

第二个版本是:

model = models.alexnet(pretrained=False, num_classes=2)

第三个版本是:

alexnet_model = models.alexnet(pretrained=False)
alexnet_model.classifier = nn.Sequential(
            nn.Dropout(),
            nn.Linear(256 * 6 * 6, 4096),
            nn.ReLU(inplace=True),
            nn.Dropout(),
            nn.Linear(4096, 4096),
            nn.ReLU(inplace=True),
            nn.Linear(4096, 2),
        )
model = alexnet_model   

目前还不懂这三个版本的区别。

但是从结果上来看,版本一和三可以训练出来效果,达到90%分别是130个epoch和160个epoch左右。

自己想想这个结果是可以通过微调学习率(版本一和三的学习率是固定的0.001),是可以减少epoch的。

针对版本二的问题,以代码alexnet_init.py会出现以下两个问题:

alexnet_init.py我加入了模型参数初始化:

def weignts_init(model):
    if isinstance(model, nn.Conv2d):
        init.normal(model.weight.data)
        init.normal(model.bias.data)
    elif isinstance(model, nn.BatchNorm2d):
        init.normal(model.weight.data)
        init.normal(model.bias.data)

还有加入学习率变化:

cheduler = torch.optim.lr_scheduler.StepLR(optimizer,
                                            step_size=step_size, gamma=factor, last_epoch=-1)

问题1:从一开始loss值没有变化过(变化幅度很小)。

解决尝试:修改学习率。 尝试过很多种学习率的修改,基本把pytorch修改学习率的函数都使用了。

函数如下:

(1) 这是固定多少个epoch修改一次学习率。

scheduler = torch.optim.lr_scheduler.StepLR(optimizer,
                               step_size=step_size, gamma=factor, last_epoch=-1)   step_size = 2,factor = 0.1

问题2:在电脑上跑,出现内存无法访问的错误。

个人认为是内存泄露,不过没有找出问题所在。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 卷积神经网络(CNN)是一种深度学习算法,通常用于解决计算机视觉问题。在人脸识别领域,CNN非常适合提取人脸图像的特征,因为它可以自动学习并提取最有意义的特征。 PyTorch是一种基于Python的深度学习框架,可以帮助开发人员快速设计、构建和训练深度学习模型。在人脸识别领域,PyTorch已被广泛使用。 基于卷积神经网络的人脸识别模型通常由卷积层、池化层、全连接层和分类器组成。 卷积层主要用于提取人脸图像的特征,而池化层则用于减少模型的参数数量和计算量。 全连接层是用于该模型的分类器,通常用于将卷积层和池化层提取的特征将其转换为可供分类器识别的形式。 在使用PyTorch进行人脸识别时,通常需要遵循以下步骤: 1. 收集和准备人脸数据集。 2. 构建卷积神经网络。 3. 通过将数据集分割成训练集和测试集来训练模型。 4. 评估模型的准确性以及确定任何需要进行调整的部分。 5. 使用模型进行实际的人脸识别任务。 基于卷积神经网络的人脸识别模型具有许多优势,包括高准确度、高效、可伸缩性和应用范围广,已经被广泛应用于面部识别,安全和监控系统等领域。 ### 回答2: 基于卷积神经网络的人脸识别是目前人工智能领域的热门应用之一,其pytorch是当前广泛应用于该领域的深度学习框架之一。卷积神经网络是一种特殊类型的神经网络,具有良好的特征提取和分类能力,适合用于人脸识别领域。 在pytorch,可以通过搭建卷积神经网络来进行人脸识别。首先,需要准备一组训练数据集和测试数据集,可以采用公开的人脸数据集,如LFW数据集。接着,可以使用pytorch的卷积层、池化层、全连接层等组件搭建卷积神经网络模型,可以采用经典的卷积神经网络结构,如AlexNet、VGG或ResNet等。 然后,需要对训练数据集进行数据增强、归一化等预处理操作,并使用损失函数来进行模型的训练和优化。同时,为了避免过拟合,可以采用一些正则化方法,如dropout、L1/L2正则化等。 最后,在测试阶段,可以将测试数据集输入训练好的人脸识别模型,通过计算模型的预测结果(如softmax概率分布)来进行人脸识别判别。 总的来说,基于卷积神经网络的人脸识别pytorch实现较为简单易懂,具有很高的精度和效率,有着广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值