解决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命令行参数sys.argv使用示例
Jan 28 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
python简单文本处理的方法
Jul 10 Python
Python的Django REST框架中的序列化及请求和返回
Apr 11 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
python实现自动解数独小程序
Jan 21 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
Aug 27 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
用Python简陋模拟n阶魔方
Apr 17 Python
Python-OpenCV教程之图像的位运算详解
Jun 21 Python
Python各协议下socket黏包问题原理
Apr 12 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
js类式继承的具体实现方法
2013/12/31 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
vue实现图书管理demo详解
2017/10/17 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
说一说Python logging
2016/04/15 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
今天学到的CSS最新技术(与图片背景相关)
2012/12/24 HTML / CSS
4s店机修工岗位职责
2013/12/20 职场文书
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
学期研究性学习个人的自我评价
2014/01/09 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
Pandas数据结构之Series的使用
2022/03/31 Python
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang