解决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 相关文章推荐
Python编程之多态用法实例详解
May 19 Python
Linux下为不同版本python安装第三方库
Aug 31 Python
利用python获取某年中每个月的第一天和最后一天
Dec 15 Python
python基本语法练习实例
Sep 19 Python
matplotlib设置legend图例代码示例
Dec 19 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 Python
PyQt5每天必学之工具提示功能
Apr 19 Python
python爬虫之模拟登陆csdn的实例代码
May 18 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
Python中如何导入类示例详解
Apr 17 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 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
打造计数器DIY三步曲(中)
2006/10/09 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
php查询mysql大量数据造成内存不足的解决方法
2015/03/04 PHP
PHP连接access数据库
2015/03/27 PHP
php中__toString()方法用法示例
2016/12/07 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
对xmlHttp对象的理解
2011/01/17 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
python实现人机猜拳小游戏
2020/02/03 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
Python PIL库图片灰化处理
2020/04/07 Python
用python制作个视频下载器
2021/02/01 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
SQL面试题
2013/12/09 面试题
GWT都有什么特性
2016/12/02 面试题
广场舞大赛策划方案
2014/05/31 职场文书
新闻发布会活动策划方案
2014/09/15 职场文书
导游词怎么写
2015/02/04 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python