解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题


Posted in Python onJune 17, 2020

遇到的问题

解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题

当时自己在使用Alexnet训练图像分类问题时,会出现损失在一个epoch中增加,换做下一个epoch时loss会骤然降低,一开始这个问题没有一点头绪,我数据也打乱了,使用的是tf.train.shuffle_batch

在capacity中设置一个值,比如是1000吧,每次取一千个数据后将这一千个数据打乱,本次使用的数据集就是每个种类1000多,而我加载数据时是一类一类加载的,这就造成了每一批次的开始可以跟前一类数据做打乱处理,但是在中间数据并不能达到充分的shuffle

解决问题

在加载数据集的时候用numpy中的shuffle将数据集充分的打乱后在读入tfrecord中,之后读取的时候使用tf.tain.shuffle_batch和使用tf.train.batch就没有区别了。另外capacity这个数值不益设置过大,会对自己的电脑造成压力。

补充知识:MATLAB中使用AlexNet、VGG、GoogLeNet进行迁移学习

直接贴代码,具体用法见注释:

clc;clear;

net = alexnet; %加载在ImageNet上预训练的网络模型
imageInputSize = [227 227 3];
%加载图像
allImages = imageDatastore('.\data227Alexnet',...
 'IncludeSubfolders',true,...
 'LabelSource','foldernames');
 %划分训练集和验证集
 [training_set,validation_set] = splitEachLabel(allImages,0.7,'randomized');
 %由于原始网络全连接层1000个输出,显然不适用于我们的分类任务,因此在这里替换
layersTransfer = net.Layers(1:end-3);
categories(training_set.Labels)
numClasses = numel(categories(training_set.Labels));
%新的网络
layers = [
 layersTransfer
 fullyConnectedLayer(numClasses,'Name', 'fc','WeightLearnRateFactor',1,'BiasLearnRateFactor',1)
 softmaxLayer('Name', 'softmax')
 classificationLayer('Name', 'classOutput')];

lgraph = layerGraph(layers);
plot(lgraph)
%对数据集进行扩增
augmented_training_set = augmentedImageSource(imageInputSize,training_set);

opts = trainingOptions('adam', ...
 'MiniBatchSize', 32,... % mini batch size, limited by GPU RAM, default 100 on Titan, 500 on P6000
 'InitialLearnRate', 1e-4,... % fixed learning rate
 'LearnRateSchedule','piecewise',...
 'LearnRateDropFactor',0.25,...
 'LearnRateDropPeriod',10,...
 'L2Regularization', 1e-4,... constraint
 'MaxEpochs',20,..
 'ExecutionEnvironment', 'gpu',...
 'ValidationData', validation_set,...
 'ValidationFrequency',80,...
 'ValidationPatience',8,...
 'Plots', 'training-progress')

net = trainNetwork(augmented_training_set, lgraph, opts);

save Alex_Public_32.mat net

[predLabels,predScores] = classify(net, validation_set);
plotconfusion(validation_set.Labels, predLabels)
PerItemAccuracy = mean(predLabels == validation_set.Labels);
title(['overall per image accuracy ',num2str(round(100*PerItemAccuracy)),'%'])

MATLAB中训练神经网络一个非常大的优势就是训练过程中各项指标的可视化,并且最终也会生成一个混淆矩阵显示验证集的结果。

以上这篇解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 Python
详解Django缓存处理中Vary头部的使用
Jul 24 Python
python 网络编程详解及简单实例
Apr 25 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
python3+dlib实现人脸识别和情绪分析
Apr 21 Python
python编程使用协程并发的优缺点
Sep 20 Python
Python线性拟合实现函数与用法示例
Dec 13 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
django的分页器Paginator 从django中导入类
Jul 25 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 Python
Python基础学习之奇异的GUI对话框
May 27 Python
Java如何基于wsimport调用wcf接口
Jun 17 #Python
使用keras内置的模型进行图片预测实例
Jun 17 #Python
Python虚拟环境库virtualenvwrapper安装及使用
Jun 17 #Python
基于TensorFlow的CNN实现Mnist手写数字识别
Jun 17 #Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 #Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 #Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
Jun 17 #Python
You might like
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
2014/08/21 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
Javascript 强制类型转换函数
2009/05/17 Javascript
js function定义函数使用心得
2010/04/15 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
jquery处理json对象
2014/11/03 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
Vue data的数据响应式到底是如何实现的
2020/02/11 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
Python使用eval函数执行动态标表达式过程详解
2020/10/17 Python
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
阿里巴巴英国:Alibaba英国
2019/12/11 全球购物
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
企业负责人任命书
2014/06/05 职场文书
语文教研活动总结
2014/07/02 职场文书
咖啡店创业计划书
2014/08/15 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
运动会100米加油稿
2015/07/21 职场文书