神經網路 | 基於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
- 深度學習筆記------卷積神經網路深度學習筆記卷積神經網路
- 深度學習卷積神經網路筆記深度學習卷積神經網路筆記
- [action]tensorflow深度學習實戰 (4) 實現簡單卷積神經網路深度學習卷積神經網路
- 深度剖析卷積神經網路卷積神經網路
- 《神經網路和深度學習》系列文章七:實現我們的神經網路來分類數字神經網路深度學習
- 深度學習--基於卷積神經網路的歌唱嗓音識別深度學習卷積神經網路
- 圖卷積神經網路分類的pytorch實現卷積神經網路PyTorch
- 深度學習——LeNet卷積神經網路初探深度學習卷積神經網路
- 深度學習經典卷積神經網路之AlexNet深度學習卷積神經網路
- 深度學習革命的開端:卷積神經網路深度學習卷積神經網路
- 卷積神經網路卷積神經網路
- 【卷積神經網路學習】(4)機器學習卷積神經網路機器學習
- 卷積神經網路學習資料卷積神經網路
- TF2.keras 實現基於卷積神經網路的影象分類模型TF2Keras卷積神經網路模型
- TF2.keras 實現基於卷積神經網路的影像分類模型TF2Keras卷積神經網路模型
- [譯] 淺析深度學習神經網路的卷積層深度學習神經網路卷積
- 卷積神經網路學習筆記——Siamese networks(孿生神經網路)卷積神經網路筆記
- 5.2.1 卷積神經網路卷積神經網路
- 卷積神經網路概述卷積神經網路
- 解密卷積神經網路!解密卷積神經網路
- 卷積神經網路CNN卷積神經網路CNN
- 卷積神經網路初探卷積神經網路
- 卷積神經網路-1卷積神經網路
- 卷積神經網路-2卷積神經網路
- 卷積神經網路-3卷積神經網路
- 卷積神經網路數學原理解析卷積神經網路
- 深度學習-卷積神經網路-演算法比較深度學習卷積神經網路演算法
- 卷積神經網路CNN-學習1卷積神經網路CNN
- matlab練習程式(神經網路分類)Matlab神經網路
- 個人學習卷積神經網路的疑惑解答卷積神經網路
- Keras上實現卷積神經網路CNNKeras卷積神經網路CNN
- 全卷積神經網路FCN卷積神經網路
- 看懂卷積神經網路(CNN)卷積神經網路CNN
- 卷積神經網路-AlexNet卷積神經網路
- 深度學習入門筆記(十八):卷積神經網路(一)深度學習筆記卷積神經網路