神經網路 | 基於MATLAB 深度學習工具實現簡單的數字分類問題(卷積神經網路)
博主github:https://github.com/MichaelBeechan
博主CSDN:https://blog.csdn.net/u011344545
%% Time:2019.3.7
%% Name:Michael Beechan
%% Function:
%% 這個例子展示瞭如何建立和訓練一個簡單的卷積神經網路用於深度學習分類。
%% 卷積神經網路是深度學習的重要工具,尤其適用於影像識別。
%% Load and explore image data.
%% Define the network architecture.
%% Specify training options.
%% Train the network.
%% Predict the labels of new data and calculate the classification accuracy.
1、 Load and explore image data
%% 載入資料並儲存
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 =
10×2 table
Label Count
_____ _____
0 1000
1 1000
2 1000
3 1000
4 1000
5 1000
6 1000
7 1000
8 1000
9 1000
%% 指定影像大小尺寸28*28*1
img = readimage(imds, 1);
size(img)
ans =
28 28
2、Specify Training and Validation Sets
%% 劃分資料為訓練集合驗證集,訓練集中每個類別包含750張影像,驗證集包含其餘影像的標籤
numTrainFiles = 750;
[imdsTrain, imdsValidation] = splitEachLabel(imds, numTrainFiles, 'randomize');
3、Define Network Architecture
%% 定義CNN框架
layers = [
imageInputLayer([28 28 1])
convolution2dLayer(3, 8, 'Padding', 'same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
convolution2dLayer(3, 16, 'padding', 'same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
convolution2dLayer(3, 32, 'Padding', 'same')
batchNormalizationLayer
reluLayer
fullyConnectedLayer(10)
softmaxLayer
classificationLayer];
4、Specify Training Options
%% 指定訓練Options——SGDM,學習率0.01,最大epoch=4
options = trainingOptions('sgdm', ...
'InitialLearnRate', 0.01, ...
'MaxEpochs', 4, ...
'Shuffle', 'every-epoch', ...
'ValidationData', imdsValidation, ...
'ValidationFrequency', 30, ...
'Verbose', false, ...
'Plots', 'training-progress');
5、使用訓練集訓練網路
net = trainNetwork(imdsTrain, layers, options);
6、對驗證影像進行分類並計算精度
%% 對驗證影像進行分類並計算精度
YPred = classify(net, imdsValidation);
YValidation = imdsValidation.Labels;
accuracy = sum(YPred == YValidation) / numel(YValidation)
accuracy = 0.9964
Okay,文章就寫在這兒了,好好消化一下吧!!!!!加油!!!!
原始碼下載:https://download.csdn.net/download/u011344545/11008033
相關文章
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 深度學習基礎-基於Numpy的卷積神經網路(CNN)實現深度學習卷積神經網路CNN
- 深度學習三:卷積神經網路深度學習卷積神經網路
- 圖卷積神經網路分類的pytorch實現卷積神經網路PyTorch
- 深度學習——LeNet卷積神經網路初探深度學習卷積神經網路
- 深度學習筆記------卷積神經網路深度學習筆記卷積神經網路
- 深度學習卷積神經網路筆記深度學習卷積神經網路筆記
- 深度學習經典卷積神經網路之AlexNet深度學習卷積神經網路
- 深度剖析卷積神經網路卷積神經網路
- 深度學習革命的開端:卷積神經網路深度學習卷積神經網路
- 卷積神經網路卷積神經網路
- TF2.keras 實現基於卷積神經網路的影象分類模型TF2Keras卷積神經網路模型
- TF2.keras 實現基於卷積神經網路的影像分類模型TF2Keras卷積神經網路模型
- 卷積神經網路學習筆記——Siamese networks(孿生神經網路)卷積神經網路筆記
- [譯] 淺析深度學習神經網路的卷積層深度學習神經網路卷積
- MATLAB神經網路工具箱(程式碼簡單實現)Matlab神經網路
- 卷積神經網路概述卷積神經網路
- 解密卷積神經網路!解密卷積神經網路
- 5.2.1 卷積神經網路卷積神經網路
- 卷積神經網路CNN卷積神經網路CNN
- 卷積神經網路-AlexNet卷積神經網路
- 卷積神經網路-1卷積神經網路
- 卷積神經網路-2卷積神經網路
- 卷積神經網路-3卷積神經網路
- 深度學習-卷積神經網路-演算法比較深度學習卷積神經網路演算法
- 卷積神經網路數學原理解析卷積神經網路
- 卷積神經網路CNN-學習1卷積神經網路CNN
- 卷積神經網路學習筆記——SENet卷積神經網路筆記SENet
- 【Pytorch】基於卷積神經網路實現的面部表情識別PyTorch卷積神經網路
- TensorFlow上實現卷積神經網路CNN卷積神經網路CNN
- Keras上實現卷積神經網路CNNKeras卷積神經網路CNN
- 卷積神經網路的原理及Python實現卷積神經網路Python
- 《卷積神經網路的Python實現》筆記卷積神經網路Python筆記
- 【卷積神經網路學習】(4)機器學習卷積神經網路機器學習
- 神經網路 | 基於MATLAB 使用CNN擬合一個迴歸模型來預測手寫數字的旋轉角度(卷積神經網路)神經網路MatlabCNN模型卷積
- 8-深度學習之神經網路核心原理與演算法-卷積神經網路深度學習神經網路演算法卷積
- 全卷積神經網路FCN卷積神經網路
- 深度學習之卷積神經網路(Convolutional Neural Networks, CNN)(二)深度學習卷積神經網路CNN