解决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在图片中添加文字的两种方法
Apr 29 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
Python将图片转换为字符画的方法
Jun 16 Python
python计算列表内各元素的个数实例
Jun 29 Python
Python装饰器语法糖
Jan 02 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
Python加密模块的hashlib,hmac模块使用解析
Jan 02 Python
python global和nonlocal用法解析
Feb 03 Python
keras之权重初始化方式
May 21 Python
python中加背景音乐如何操作
Jul 19 Python
matplotlib实现数据实时刷新的示例代码
Jan 05 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 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
15种PHP Encoder的比较
2007/03/06 PHP
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
PHP里的单例类写法实例
2015/06/25 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
2020/09/17 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
angular.element方法汇总
2015/01/07 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
原生js实现仿window10系统日历效果的实例
2017/10/31 Javascript
JS实现二维数组元素的排列组合运算简单示例
2019/01/28 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
Python 抓取动态网页内容方案详解
2014/12/25 Python
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
Tornado高并发处理方法实例代码
2018/01/15 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
Python3实现取图片中特定的像素替换指定的颜色示例
2019/01/24 Python
python中时间模块的基本使用教程
2019/05/14 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
Django中的静态文件管理过程解析
2019/08/01 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
毕业自我鉴定总结
2014/03/24 职场文书
个人委托书如何写
2014/09/25 职场文书
2016春节家属慰问信
2015/03/25 职场文书
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js