做微信平台网站网站的几种提交方式
web/
2025/9/30 20:32:42/
文章来源:
做微信平台网站,网站的几种提交方式,大学生做的广告短视频网站,如何做企业网站方法1、卷积神经网络的手写数字旋转角度预测原理及流程
基于卷积神经网络的手写数字旋转角度预测是一个常见的计算机视觉问题。在这种情况下#xff0c;我们可以通过构建一个卷积神经网络#xff08;Convolutional Neural Network#xff0c;CNN#xff09;来实现该任务。以下…1、卷积神经网络的手写数字旋转角度预测原理及流程
基于卷积神经网络的手写数字旋转角度预测是一个常见的计算机视觉问题。在这种情况下我们可以通过构建一个卷积神经网络Convolutional Neural NetworkCNN来实现该任务。以下是基于MATLAB的手写数字旋转角度预测的原理和流程
原理 数据准备首先准备一个包含手写数字图像和其对应标签即旋转角度的数据集。这些图像可以是MNIST数据集的手写数字。 模型建立构建一个CNN模型包括卷积层、池化层、全连接层等来学习手写数字图像的特征并预测它们的旋转角度。 训练模型利用准备好的训练数据集对CNN模型进行训练通过反向传播算法来调整模型参数以最小化预测与真实标签之间的误差。 模型评估使用测试数据集对训练好的模型进行评估计算模型的准确率或其他性能指标以评估其在预测手写数字旋转角度方面的性能。
流程 加载数据集在MATLAB中加载手写数字图像数据集并对图像进行预处理和标签处理以便输入到CNN模型中。 构建CNN模型使用MATLAB深度学习工具箱中的函数如convolution2dLayer、maxPooling2dLayer、fullyConnectedLayer、classificationLayer构建一个适合手写数字旋转角度预测的CNN模型。 定义训练选项设置训练选项包括优化器类型、学习率、最大训练轮数等。 训练模型使用训练数据集对CNN模型进行训练通过调用trainNetwork函数并传入训练数据和训练选项来完成训练过程。 评估模型使用测试数据集对训练好的模型进行评估计算准确率等性能指标。 预测手写数字的旋转角度最后使用训练好的模型对新的手写数字图像进行预测得到其旋转角度的预测结果。
这是基于卷积神经网络的手写数字旋转角度预测的基本原理和流程。
2、卷积神经网络的手写数字旋转角度预测案例说明
1解决问题
卷积神经网络来预测手写数字的旋转角度
2技术方案
回归任务涉及预测连续数值而不是离散类标签回归构造卷积神经网络架构训练网络并使用经过训练的网络来预测旋转手写数字的角度。
3、加载数据
1数据说明
数据集包含手写数字的合成图像以及每个图像的旋转角度以度为单位。
2加载数据代码
说明变量 anglesTrain 和 anglesTest 是以度为单位的旋转角度。训练数据集和测试数据集各包含 5000 个图像。
load DigitsDataTrain
load DigitsDataTest
3显示训练集代码
numObservations size(XTrain,4);
idx randperm(numObservations,49);
I imtile(XTrain(:,:,:,idx));
figure
imshow(I); 视图效果 4数据集划分代码
说明使用 trainingPartitions 函数将 XTrain 和 anglesTrain 分区为训练分区和验证分区留出 15% 的训练数据用于验证。
[idxTrain,idxValidation] trainingPartitions(numObservations,[0.85 0.15]);XValidation XTrain(:,:,:,idxValidation);
anglesValidaiton anglesTrain(idxValidation);XTrain XTrain(:,:,:,idxTrain);
anglesTrain anglesTrain(idxTrain);
4、检查数据归一化
1归一化说明
训练神经网络时确保数据在网络的所有阶段均归一化。
对于使用梯度下降的网络训练归一化有助于训练的稳定和加速.
数据比例不佳则损失可能会变为 NaN并且网络参数在训练过程中可能发生偏离
归一化数据的常用方法包括重新缩放数据使其范围变为 [0,1]或使其均值为 0 且标准差为 1
2绘制响应的分布代码
说明响应以度为单位的旋转角度大致均匀地分布在 -45 和 45 之间效果很好无需归一化。
figure
histogram(anglesTrain)
axis tight
ylabel(Counts)
xlabel(Rotation Angle)视图效果 5、定义神经网络架构
1神经网络架构说明
对于图像输入指定一个图像输入层。
指定四个 convolution-batchnorm-ReLU 模块并增加滤波器数量。
在每个模块之间指定一个具有池化区域的平均池化层步幅大小为 2。
在网络末尾包含一个全连接层其输出大小与响应数量匹配。
2神经网络架构代码
numResponses 1;layers [imageInputLayer([28 28 1])convolution2dLayer(3,8,Paddingsame)batchNormalizationLayerreluLayeraveragePooling2dLayer(2,Stride2)convolution2dLayer(3,16,Paddingsame)batchNormalizationLayerreluLayeraveragePooling2dLayer(2,Stride2)convolution2dLayer(3,32,Paddingsame)batchNormalizationLayerreluLayerconvolution2dLayer(3,32,Paddingsame)batchNormalizationLayerreluLayerfullyConnectedLayer(numResponses)];
6、指定训练选项
1指定训练选项说明
使用Experiment Manager。
将初始学习率设置为 0.001并在 20 轮训练后降低学习率。
通过指定验证数据和验证频率监控训练过程中的网络准确度。软件基于训练数据训练网络并在训练过程中按固定时间间隔计算基于验证数据的准确度。验证数据不用于更新网络权重。
在图中显示训练进度并监控均方根误差。
2指定训练选项代码
miniBatchSize 128;
validationFrequency floor(numel(anglesTrain)/miniBatchSize);options trainingOptions(sgdm, ...MiniBatchSizeminiBatchSize, ...InitialLearnRate1e-3, ...LearnRateSchedulepiecewise, ...LearnRateDropFactor0.1, ...LearnRateDropPeriod20, ...Shuffleevery-epoch, ...ValidationData{XTest,anglesTest}, ...ValidationFrequencyvalidationFrequency, ...Plotstraining-progress, ...Metricsrmse, ...Verbosefalse);
7、训练神经网络
1训练神经网络说明
使用 trainnet 函数训练神经网络。
对于回归请使用均方误差损失。默认情况下trainnet 函数使用 GPU如果有。使用 GPU 需要 Parallel Computing Toolbox™ 许可证和受支持的 GPU 设备。要指定执行环境请使用 ExecutionEnvironment 训练选项。
2训练神经网络代码
net trainnet(XTrain,anglesTrain,layers,mse,options);
视图效果 8、测试网络
1测试网络说明
基于测试数据评估准确度来测试网络性能。
使用 minibatchpredict 函数进行预测。默认情况下minibatchpredict 函数使用 GPU如果有。
2测试网络代码
YTest minibatchpredict(net,XTest);
3计算均方根误差 (RMSE) 以衡量预测旋转角度和实际旋转角度之间的差异
predictionError anglesTest - YTest;
squares predictionError.^2;
rmse sqrt(mean(squares)) 4散点图中可视化预测。绘制预测值对真实值的图。
figure
scatter(YTest,anglesTest,)
xlabel(Predicted Value)
ylabel(True Value)hold on
plot([-60 60], [-60 60],y--)
视图效果 9、使用新数据进行预测
1测试说明
使用 predict 函数并使用神经网络对第一个测试图像进行预测
2测试代码
X XTest(:,:,:,1);
if canUseGPUX gpuArray(X);
end
Y predict(net,X)
10、总结
基于卷积神经网络的手写数字旋转角度预测是一个常见的计算机视觉问题通过使用MATLAB深度学习工具箱可以比较方便地实现。下面是对这一任务的总结
总结要点 数据准备准备包含手写数字图像和对应旋转角度标签的数据集如MNIST数据集。 模型建立构建卷积神经网络CNN模型通过卷积层、池化层、全连接层等结构来学习手写数字图像的特征和预测旋转角度。 训练模型使用训练数据集对CNN模型进行训练通过反向传播算法来调整模型参数最小化预测与真实标签的误差。 模型评估使用测试数据集对训练好的模型进行评估计算准确率或其他性能指标评定模型在预测旋转角度上的性能。
实现流程 数据加载和预处理加载手写数字图像数据集对图像进行预处理如缩放、归一化并提取对应的旋转角度标签。 CNN模型构建使用MATLAB深度学习工具箱中的函数构建CNN模型包括卷积层、池化层、全连接层并适当选择激活函数。 训练模型定义训练选项选择优化器和学习率等参数使用训练数据集对CNN模型进行训练。 模型评估使用测试数据集对训练好的模型进行评估检验其在预测手写数字旋转角度的准确性。 预测和应用最后使用训练好的模型对新的手写数字图像进行预测实现手写数字旋转角度的自动识别和预测。
通过以上流程和总结您可以利用MATLAB深度学习工具箱来实现基于卷积神经网络的手写数字旋转角度预测任务。
11、源代码
代码
%% 基于卷积神经网络的手写数字旋转角度预测
%卷积神经网络来预测手写数字的旋转角度
%回归任务涉及预测连续数值而不是离散类标签
%回归构造卷积神经网络架构训练网络并使用经过训练的网络来预测旋转手写数字的角度。%% 加载数据
%数据集包含手写数字的合成图像以及每个图像的旋转角度以度为单位。
%变量 anglesTrain 和 anglesTest 是以度为单位的旋转角度。训练数据集和测试数据集各包含 5000 个图像。load DigitsDataTrain
load DigitsDataTest%显示训练集
numObservations size(XTrain,4);
idx randperm(numObservations,49);
I imtile(XTrain(:,:,:,idx));
figure
imshow(I);%数据集划分
%使用 trainingPartitions 函数将 XTrain 和 anglesTrain 分区为训练分区和验证分区留出 15% 的训练数据用于验证。
[idxTrain,idxValidation] trainingPartitions(numObservations,[0.85 0.15]);XValidation XTrain(:,:,:,idxValidation);
anglesValidaiton anglesTrain(idxValidation);XTrain XTrain(:,:,:,idxTrain);
anglesTrain anglesTrain(idxTrain);%% 检查数据归一化
%训练神经网络时确保数据在网络的所有阶段均归一化。
%对于使用梯度下降的网络训练归一化有助于训练的稳定和加速.
%数据比例不佳则损失可能会变为 NaN并且网络参数在训练过程中可能发生偏离
%归一化数据的常用方法包括重新缩放数据使其范围变为 [0,1]或使其均值为 0 且标准差为 1%绘制响应的分布。
% 响应以度为单位的旋转角度大致均匀地分布在 -45 和 45 之间效果很好无需归一化。
figure
histogram(anglesTrain)
axis tight
ylabel(Counts)
xlabel(Rotation Angle)%% 定义神经网络架构
%对于图像输入指定一个图像输入层。
%指定四个 convolution-batchnorm-ReLU 模块并增加滤波器数量。
%在每个模块之间指定一个具有池化区域的平均池化层步幅大小为 2。
%在网络末尾包含一个全连接层其输出大小与响应数量匹配。
numResponses 1;layers [imageInputLayer([28 28 1])convolution2dLayer(3,8,Paddingsame)batchNormalizationLayerreluLayeraveragePooling2dLayer(2,Stride2)convolution2dLayer(3,16,Paddingsame)batchNormalizationLayerreluLayeraveragePooling2dLayer(2,Stride2)convolution2dLayer(3,32,Paddingsame)batchNormalizationLayerreluLayerconvolution2dLayer(3,32,Paddingsame)batchNormalizationLayerreluLayerfullyConnectedLayer(numResponses)];
%% 指定训练选项
%使用Experiment Manager。
%将初始学习率设置为 0.001并在 20 轮训练后降低学习率。
%通过指定验证数据和验证频率监控训练过程中的网络准确度。软件基于训练数据训练网络并在训练过程中按固定时间间隔计算基于验证数据的准确度。验证数据不用于更新网络权重。
%在图中显示训练进度并监控均方根误差。miniBatchSize 128;
validationFrequency floor(numel(anglesTrain)/miniBatchSize);options trainingOptions(sgdm, ...MiniBatchSizeminiBatchSize, ...InitialLearnRate1e-3, ...LearnRateSchedulepiecewise, ...LearnRateDropFactor0.1, ...LearnRateDropPeriod20, ...Shuffleevery-epoch, ...ValidationData{XTest,anglesTest}, ...ValidationFrequencyvalidationFrequency, ...Plotstraining-progress, ...Metricsrmse, ...Verbosefalse);
%% 训练神经网络
%使用 trainnet 函数训练神经网络。
%对于回归请使用均方误差损失。默认情况下trainnet 函数使用 GPU如果有。使用 GPU 需要 Parallel Computing Toolbox™ 许可证和受支持的 GPU 设备。要指定执行环境请使用 ExecutionEnvironment 训练选项。
net trainnet(XTrain,anglesTrain,layers,mse,options);
%% 测试网络
%基于测试数据评估准确度来测试网络性能。
%使用 minibatchpredict 函数进行预测。默认情况下minibatchpredict 函数使用 GPU如果有。
YTest minibatchpredict(net,XTest);
%计算均方根误差 (RMSE) 以衡量预测旋转角度和实际旋转角度之间的差异。
predictionError anglesTest - YTest;
squares predictionError.^2;
rmse sqrt(mean(squares))
%散点图中可视化预测。绘制预测值对真实值的图。
figure
scatter(YTest,anglesTest,)
xlabel(Predicted Value)
ylabel(True Value)hold on
plot([-60 60], [-60 60],y--)%% 使用新数据进行预测
%使用 predict 函数并使用神经网络对第一个测试图像进行预测
X XTest(:,:,:,1);
if canUseGPUX gpuArray(X);
end
Y predict(net,X)
工程文件
https://download.csdn.net/download/XU157303764/89494539
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84643.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!