IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> matlab深度学习基本操作,深度学习讲解,源代码分享,用一用改一改随便发篇EI -> 正文阅读

[人工智能]matlab深度学习基本操作,深度学习讲解,源代码分享,用一用改一改随便发篇EI

神经网络工具箱?提供了算法、预训练模型和应用程序来创建、训练、可视化和模拟浅层和深层神经网络。您可以执行分类、回归、聚类、降维、时间序列预测以及动态系统建模和控制。

深度学习网络包括卷积神经网络(ConvNets, CNNs)、有向无环图(DAG)网络拓扑,以及用于图像分类、回归和特征学习的自动编码器。对于时间序列分类和回归,工具箱提供了长期短期记忆(LSTM)深度学习网络。您可以可视化中间层和激活,修改网络架构,并监控培训进度。

对于小的训练集,您可以通过使用预先训练的深度网络模型(包括Inception-v3、ResNet-50、ResNet-101、GoogLeNet、AlexNet、vg -16和vg -19)和TensorFlow?-Keras或Caffe导入的模型进行迁移学习,快速应用深度学习。

为了加速大型数据集的训练,您可以在桌面上的多核处理器和GPU(使用并行计算工具箱?)上分布计算和数据,或者扩展到集群和云,包括Amazon EC2?P2、P3和G3 GPU实例(使用MATLAB?分布式计算服务器?)。

关于深度学习方法的免费实践介绍,请参阅deep learning Onramp。

10行MATLAB?代码实现深度学习
这个例子展示了如何使用深度学习来识别现场摄像头上的对象,仅使用10行MATLAB?代码。试一下这个例子,看看在MATLAB中开始深度学习有多简单。

如果需要,运行这些命令获取下载,连接到网络摄像头,并获得预先训练的神经网络。
不想安放弃,下一个。

如何使用预先训练的深度卷积神经网络GoogLeNet对图像进行分类。

GoogLeNet已经对超过100万张图片进行了训练,并可以将图片分类为1000个对象类别(比如键盘、咖啡杯、铅笔和许多动物)。该网络为广泛的图像学习了丰富的特征表示。该网络以图像作为输入,并输出图像中对象的标签以及每个对象类别的概率。
Pretrained网络
加载预先训练好的google网络。您也可以选择加载一个不同的预训练网络来进行图像分类。这一步需要GoogLeNet网络的神经网络工具箱?模型。如果您没有安装所需的支持包,那么该软件将提供一个下载链接。
然后又需要安装,安装就可以用了,做图像处理的。有需要可以深入了解。

这个例子展示了如何使用迁移学习再训练AlexNet,一个预处理卷积神经网络,分类一组新的图像。试试这个例子,看看在MATLAB?中开始深度学习有多简单。

迁移学习是深度学习应用中常用的一种学习方法。你可以把一个预先训练过的网络作为学习新任务的起点。用迁移学习对网络进行微调通常比用随机初始化的权值从零开始训练网络要快得多,也容易得多。你可以使用少量的训练图像快速地将学习到的特征转移到一个新的任务中。

加载数据
解压缩并将新映像作为映像数据存储加载。将数据分为训练数据集和验证数据集。使用70%的图像进行训练,30%的图像进行验证。

unzip(‘MerchData.zip’);
imds = imageDatastore(‘MerchData’,‘IncludeSubfolders’,true,‘LabelSource’,‘foldernames’);
[imdsTrain,idmsValidation] = splitEachLabel(imds,0.7,‘randomized’);

加载Pretrained网络
加载预训练的AlexNet网络。如果AlexNet网络的神经网络工具箱?模型没有安装,则软件提供下载链接。AlexNet已经对超过100万张图像进行了训练,并可以将图像分类为1000个对象类别(如键盘、咖啡杯、铅笔和许多动物)。该网络为广泛的图像学习了丰富的特征表示。该网络以图像作为输入,并输出图像中对象的标签以及每个对象类别的概率。

然后又是一个下载安装alexnet的过程。图像处理跳过。

我想要的分类来了,详细介绍。
这个例子展示了如何创建和训练一个简单的卷积神经网络的深度学习分类。卷积神经网络是深度学习的基本工具,尤其适用于图像识别。

这个例子演示了如何:

加载和浏览图像数据。
定义网络架构。
指定培训选项。
培训网络。
预测新数据的标签,计算分类准确率。
加载和浏览图像数据
将数字样例数据加载为图像数据存储。imageDatastore会根据文件夹名称自动给图像贴上标签,并将数据存储为imageDatastore对象。图像数据存储使您能够存储大量图像数据,包括内存不适合的数据,并在卷积神经网络训练期间有效地读取成批图像。
直接展示效果

digitDatasetPath = fullfile(matlabroot,‘toolbox’,‘nnet’,‘nndemos’, …
‘nndatasets’,‘DigitDataset’);
imds = imageDatastore(digitDatasetPath, …
‘IncludeSubfolders’,true,‘LabelSource’,‘foldernames’);

figure;
perm = randperm(10000,20);
for i = 1:20
subplot(4,5,i);
imshow(imds.Files{perm(i)});
end

labelCount = countEachLabel(imds)

labelCount =

img = readimage(imds,1);
size(img)

numTrainFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,‘randomize’);

layers = [
imageInputLayer([28 28 1])

convolution2dLayer(3,8,'Padding',1)
batchNormalizationLayer
reluLayer

maxPooling2dLayer(2,'Stride',2)

convolution2dLayer(3,16,'Padding',1)
batchNormalizationLayer
reluLayer

maxPooling2dLayer(2,'Stride',2)

convolution2dLayer(3,32,'Padding',1)
batchNormalizationLayer
reluLayer

fullyConnectedLayer(10)
softmaxLayer
classificationLayer];

options = trainingOptions(‘sgdm’, …
‘MaxEpochs’,4, …
‘ValidationData’,imdsValidation, …
‘ValidationFrequency’,30, …
‘Verbose’,false, …
‘Plots’,‘training-progress’);

net = trainNetwork(imdsTrain,layers,options);
YPred = classify(net,imdsValidation);
YValidation = imdsValidation.Labels;

accuracy = sum(YPred == YValidation)/numel(YValidation)
数字识别准确率达到了
accuracy =

0.9956

开始详解:
加载和浏览图像数据
将数字样例数据加载为图像数据存储。imageDatastore会根据文件夹名称自动给图像贴上标签,并将数据存储为imageDatastore对象。图像数据存储使您能够存储大量图像数据,包括内存不适合的数据,并在卷积神经网络训练期间有效地读取成批图像。
digitDatasetPath = fullfile(matlabroot,‘toolbox’,‘nnet’,‘nndemos’, …
‘nndatasets’,‘DigitDataset’);
imds = imageDatastore(digitDatasetPath, …
‘IncludeSubfolders’,true,‘LabelSource’,‘foldernames’);
figure;
perm = randperm(10000,20);
for i = 1:20
subplot(4,5,i);
imshow(imds.Files{perm(i)});
end
在这里插入图片描述

计算每个类别中图像的数量。labelCount是一个包含标签和拥有每个标签的图像数量的表。数据存储包含1000个图像,用于0-9的每个数字,总共是10000个图像。可以通过OutputSize参数指定网络中最后一个完全连接层中的类数量。
labelCount = countEachLabel(imds)
必须指定网络输入层中图像的大小。检查digitData中第一个图像的大小。每个图像都是28 × 28 × 1像素。
img = readimage(imds,1);
size(img)
指定训练和验证集
将数据划分为训练数据集和验证数据集,训练集中的每个类别包含750张图像,验证集中包含每个标签的剩余图像。splitEachLabel将数据存储digitData分割为两个新的数据存储:trainDigitData和valDigitData。
numTrainFiles = 750;
[imdsTrain,imdsValidation] = splitEachLabel(imds,numTrainFiles,‘randomize’);
定义网络体系结构
定义卷积神经网络结构。
layers = [
imageInputLayer([28 28 1])

convolution2dLayer(3,8,'Padding',1)
batchNormalizationLayer
reluLayer

maxPooling2dLayer(2,'Stride',2)

convolution2dLayer(3,16,'Padding',1)
batchNormalizationLayer
reluLayer

maxPooling2dLayer(2,'Stride',2)

convolution2dLayer(3,32,'Padding',1)
batchNormalizationLayer
reluLayer

fullyConnectedLayer(10)
softmaxLayer
classificationLayer];

imageInputLayer是指定图像大小的地方,在本例中是28 * 28 * 1。这些数字对应于高度、宽度和通道大小。数字数据由灰度图像组成,所以通道大小(颜色通道)为1。对于彩色图像,通道大小为3,对应RGB值。您不需要打乱数据,因为默认情况下,trainNetwork在训练开始时打乱数据。

在卷积层中,第一个参数是filterSize,它是训练函数在沿着图像扫描时使用的过滤器的高度和宽度。在本例中,数字3表示过滤器大小为3 × 3。您可以为过滤器的高度和宽度指定不同的大小。第二个参数是过滤器的数量numFilters,它是连接到输入的同一区域的神经元的数量。该参数决定特性映射的个数。使用’Padding’名称-值对向输入特性映射添加Padding。对于大小为3的过滤器,填充1确保空间输出大小与输入大小相同。您还可以使用convolution2dLayer的名称-值对参数来定义这个层的Stride和学习速率。

批归一化层批归一化层对通过网络传播的激活和梯度进行了归一化,使网络训练成为一个更容易求解的优化问题。在卷积层和非线性层之间使用批处理归一化层,如ReLU层,以加快网络训练,降低对网络初始化的敏感性。使用batchNormalizationLayer创建一个批处理规范化层。

ReLU层batch normalization层之后是一个非线性激活函数。最常见的激活函数是整流线性单元(ReLU)。使用reluLayer创建一个ReLU层。

Convolutional Layer (with activation functions)有时会跟随一个down-sampling operation来减小feature map的空间大小并移除冗余的空间信息。降采样使得在更深的卷积层中增加滤波器的数量成为可能,而不需要增加每层所需的计算量。降采样的一种方法是使用最大池,它是使用maxPooling2dLayer创建的。最大池化层返回输入矩形区域的最大值,由第一个参数poolSize指定。本例中矩形区域的大小为[2,2]。“Stride”名称-值对参数指定了训练函数沿输入扫描时使用的步长。

全连接层卷积层和下采样层之后是一个或多个全连接层。顾名思义,完全连接层是指神经元与前一层的所有神经元相连的一层。这一层结合了前一层在图像中学习到的所有特征来识别更大的模式。最后一个全连通层将特征结合起来对图像进行分类。因此,最后一个完全连接层中的OutputSize参数等于目标数据中的类数量。在本例中,输出大小为10,对应于10个类。使用fulllyconnectedlayer创建一个完全连接的层。

Softmax层Softmax激活功能使全连接层输出正常。softmax层的输出由求和为1的正数组成,这些正数可以被分类层用作分类概率。在最后一个完全连接的层之后,使用softmaxLayer函数创建一个softmax层。

最后一层是分类层。这一层使用每个输入的softmax激活函数返回的概率来将输入分配给一个互斥的类并计算损失。要创建一个分类层,使用classificationLayer。
指定培训选项
定义网络结构后,指定训练选项。设置最大epoch数为4。epoch是整个训练数据集上的一个完整的训练周期。以0.01的初始学习率开始训练。在培训期间通过指定验证数据和验证频率来监控网络的准确性。该软件根据训练数据对网络进行训练,并在训练过程中定期计算验证数据的准确性。验证数据不用于更新网络权值。打开训练进度图,并关闭命令窗口输出。
options = trainingOptions(‘sgdm’, …
‘MaxEpochs’,4, …
‘ValidationData’,imdsValidation, …
‘ValidationFrequency’,30, …
‘Verbose’,false, …
‘Plots’,‘training-progress’);
使用训练数据的训练网络
使用层定义的体系结构、训练数据和训练选项来训练网络。默认情况下,trainNetwork使用GPU(需要Parallel Computing Toolbox?和CUDA?启用的GPU,具有3.0或更高的计算能力)。否则,它将使用CPU。您还可以使用trainingOptions的’ExecutionEnvironment’名称-值对参数来指定执行环境。

训练进度图显示了小批损失和准确性以及验证损失和准确性。有关培训进度图的更多信息,请参见监控深度学习培训进度。损失是k个互斥类的交叉熵函数。正确率是指网络正确分类图像的百分比。
net = trainNetwork(imdsTrain,layers,options);
在这里插入图片描述

分类验证图像和计算精度
利用训练的网络预测验证数据的标签,并计算最终的验证精度。准确性是指网络预测正确的标签的比例。在这种情况下,超过99%的预测标签与验证集的真实标签匹配。
YPred = classify(net,imdsValidation);
YValidation = imdsValidation.Labels;

accuracy = sum(YPred == YValidation)/numel(YValidation)

  人工智能 最新文章
OTSU 获取最佳阈值,及opencv二值化
动作捕捉系统用于模仿学习
剪切图片matlab
[问题笔记]PyTorch使用tensorboard报错‘Te
从数据预处理开始,用最简单的3D的CNN实现五
STN可以增强CNN网络
集成学习学习笔记——Blending与Stacking(
NLP系列:Transformer详解
NLP入门
【强化学习】手把手教你实现游戏通关AI(1)—
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 14:32:45  更:2021-07-10 14:34:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
360图书馆 购物 三丰科技 阅读网 日历 万年历 2021年10日历 -2021/10/28 12:50:25-
图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码