如何用Matlab做一个新的迁移学习实战详解

大家好我们今天来讲一讲如何用matlab做一个新的迁移学习您可能需要的基础知识
matlab编程deep learning的基础知识
一、什么是迁移学习?
以图像识别为例。如果你想构建一个神经网络,让它能够识别马匹,但是手上又没有任何公开的算法可以完成这项任务。这时,借助迁移学习,你可以从一个原本是用来识别其它动物的现成的卷积神经网络(cnn)入手,对其进行调整并训练它识别马匹。深度学习应用中常常用到迁移学习。可以采用预训练的网络,基于它学习新任务。与使用随机初始化的权重从头训练网络相比,通过迁移学习微调网络要更快更简单。我们可以使用较少数量的训练图像快速地将已学习的特征迁移到新任务。
二、网络的创建和数据的导入
加载数据
解压缩新图像并加载这些图像作为图像数据存储。imagedatastore 根据文件夹名称自动标注图像,并将数据存储为 imagedatastore 对象。通过图像数据存储可以存储大图像数据,包括无法放入内存的数据,并在卷积神经网络的训练过程中高效分批读取图像。
unzip(‘merchdata.zip’);imds = imagedatastore(‘merchdata’, 。.. ‘includesubfolders’,true, 。.. ‘labelsource’,‘foldernames’);
将数据划分为训练数据集和验证数据集。将 70% 的图像用于训练,30% 的图像用于验证。spliteachlabel 将 images 数据存储拆分为两个新的数据存储。
[imdstrain,imdsvalidation] = spliteachlabel(imds,0.7,‘randomized’);
这个非常小的数据集现在包含 55 个训练图像和 20 个验证图像。
numtrainimages = numel(imdstrain.labels);idx = randperm(numtrainimages,16);figurefor i = 1:16 subplot(4,4,i) i = readimage(imdstrain,idx(i)); imshow(i)end
加载预训练网络
加载预训练的 alexnet 神经网络。如果未安装 deep learning toolbox model for alexnet network,则软件会提供下载链接。alexnet 已基于超过一百万个图像进行训练,可以将图像分为 1000 个对象类别(例如键盘、鼠标、铅笔和多种动物)。因此,该模型已基于大量图像学习了丰富的特征表示。
net = alexnet;
使用 analyzenetwork 可以交互可视方式呈现网络架构以及有关网络层的详细信息。
analyzenetwork(net)
第一层(图像输入层)需要大小为 227×227×3 的输入图像
其中 3 是颜色通道数
inputsize = 1×3 227 227 3
三、网络的训练
替换最终层
预训练网络 net 的最后三层针对 1000 个类进行配置。必须针对新分类问题微调这三个层。从预训练网络中提取除最后三层之外的所有层。
layerstransfer = net.layers(1:end-3);
通过将最后三层替换为全连接层、softmax 层和分类输出层,将层迁移到新分类任务。根据新数据指定新的全连接层的选项。将全连接层设置为大小与新数据中的类数相同。要使新层中的学习速度快于迁移的层,请增大全连接层的 weightlearnratefactor 和 biaslearnratefactor 值。
numclasses = numel(categories(imdstrain.labels))numclasses = 5
layers = [ layerstransfer fullyconnectedlayer(numclasses,‘weightlearnratefactor’,20,‘biaslearnratefactor’,20) softmaxlayer classificationlayer];
训练网络
网络要求输入图像的大小为 227×227×3,但图像数据存储中的图像具有不同大小。使用增强的图像数据存储可自动调整训练图像的大小。指定要对训练图像额外执行的增强操作:沿垂直轴随机翻转训练图像,以及在水平和垂直方向上随机平移训练图像最多 30 个像素。数据增强有助于防止网络过拟合和记忆训练图像的具体细节。
pixelrange = [-30 30];imageaugmenter = imagedataaugmenter( 。.. ‘randxreflection’,true, 。.. ‘randxtranslation’,pixelrange, 。.. ‘randytranslation’,pixelrange);augimdstrain = augmentedimagedatastore(inputsize(1:2),imdstrain, 。.. ‘dataaugmentation’,imageaugmenter);
对验证图像进行分类
使用经过微调的网络对验证图像进行分类
[ypred,scores] = classify(nettransfer,augimdsvalidation);
显示四个示例验证图像及预测的标签。
idx = randperm(numel(imdsvalidation.files),4);figurefor i = 1:4 subplot(2,2,i) i = readimage(imdsvalidation,idx(i)); imshow(i) label = ypred(idx(i)); title(string(label));end
计算针对验证集的分类准确度。准确度是网络预测正确的标签的比例
yvalidation = imdsvalidation.labels;accuracy = mean(ypred == yvalidation)
accuracy = 1
今天你学废了吗???


OLED显示器中的多线寻址技术
具有音量和音调控制的立体声前置放大器电路图
小基站撑起大格局 运营商开辟自研新赛道
广受好评的魅族Flyme“SOS报警辅助”功能将接入全国更多地区
军事体能训考难题破解和技术手段创新方案
如何用Matlab做一个新的迁移学习实战详解
吉利dma项目进展_吉利DMA工厂将建成
由于MCU缩小,物联网应用范围的扩大
华为推出智慧屏V75,小智能变身为大智慧
过流自锁电路图解析
无线传感器网络的WiME系统路由设计[图]
新一代OPPO AR Glass 2021精彩亮相
小米预计四月就确立汽车项目?
小米6什么时候上市?小米6最新消息:小米6细节曝光,屏幕效果惊艳
骨传导耳机和传统耳机该选择哪一种?
依未科技用技术先发优势破解AI落地难题 做真正解决问题的AI医疗
软包锂电池的主要优势
鼎升电力为伟晔矿业提供电缆查找服务
一种新的高性能金属3D打印技术
苹果新设计曝光:跟随潮流还是制造潮流?