一、简介
matlab基于卷积神经网络手写汉字识别,手写汉字识别是基于CNN的图像分类任务之一。它利用CNN从原始图像中提取特征,然后通过分类器对汉字进行分类。由于手写汉字图像具有多样性、复杂性等特点,因此需要设计合适的CNN模型以实现高效的识别。
二、部分源码
clc; clear all; close all;%清空命内容,清空所有变量
warning off all;%取消所有警告
% 获取字符集
fd = fullfile(pwd, 'images', 'dbx');
imds = imageDatastore(fd, ...
'IncludeSubfolders',true,'LabelSource','foldernames');
classes = categories(imds.Labels);
rateTrainFiles = 3/4;
image_size = [28 28 1];%输入层数据集的标签大小,
class_number = length(classes);%标签的数量长度
layers = get_self_net(image_size, class_number);
inputSize = layers(1).InputSize;%输入输入层的标签大小
imdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain,'ColorPreprocessing','rgb2gray');
MaxEpochs = 10;%训练最大次数
InitialLearnRate = 0.001;%初始学习率
MiniBatchSize = 50;%每次迭代使用的数据量的大小
ExecutionEnvironment = 'auto';%自动创建
options_train = trainingOptions('sgdm',...
'MaxEpochs',MaxEpochs,...
'InitialLearnRate',InitialLearnRate,...
'Verbose',true,'MiniBatchSize', MiniBatchSize,...
'Plots','training-progress',...
'ValidationData',augimdsValidation , ...
'ValidationFrequency',10, ...
'ExecutionEnvironment', ExecutionEnvironment);
%保存网格
net_file = 'cnn_net.mat';
if exist(net_file, 'file')
load(net_file);
else
net = trainNetwork(imdsTrain, layers, options_train);
% 存储网络
save(net_file, 'net');
end
三、运行结果
四、matlab版本
MATLAB R2019a
五、学习与交流
文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私信