网站详细页制作,建设网站考虑因素,兼职网站项目建设报告,策划网站建设方案一、基于CNNSoftmax函数进行分类
1数据集准备
2模型设计
3模型训练
4模型评估
5结果分析
二、 基于CNNsigmoid函数进行分类
1数据集准备
2模型设计
3模型训练
4模型评估
5结果分析
三、 基于CNNSVM进行分类
1数据集准备
2模型设计
3模型训练
4模型评估
5结果分…
一、基于CNNSoftmax函数进行分类
1数据集准备
2模型设计
3模型训练
4模型评估
5结果分析
二、 基于CNNsigmoid函数进行分类
1数据集准备
2模型设计
3模型训练
4模型评估
5结果分析
三、 基于CNNSVM进行分类
1数据集准备
2模型设计
3模型训练
4模型评估
5结果分析
四、 基于svm对MNIST进行分类
1 数据集准备
2 数据预处理
3 模型训练
4 模型评估
5 结果可视化
6 总结与展望
五、 总结 一、基于CNNSoftmax函数进行分类
本扩展实验旨在通过构建卷积神经网络CNN结合Softmax分类器的方式对MNIST数据集进行手写数字识别任务探索不同训练参数对模型性能的影响并最终验证CNNSoftmax在手写数字分类问题中的有效性。以下是实验的具体步骤与过程描述。
1数据集准备
本实验使用MNIST数据集的简化版本包含1797张8×8像素的灰度图像分为10个类别数字0到9。为了确保数据分布均匀我按照80%的比例随机划分数据为训练集20%为测试集。
在数据预处理过程中我首先对每张图像进行了标准化将每个像素值缩放至零均值和单位方差的分布这有助于提高模型训练的稳定性和收敛速度。随后将每张图像从一维向量格式64维重塑为二维张量格式1×8×8以满足卷积神经网络的输入要求。此外为避免数据顺序对模型训练的影响我在训练开始前对数据进行了随机打乱操作。
2模型设计
本实验构建的卷积神经网络由两层卷积层和两层全连接层组成。第一层卷积操作通过16个3×3的卷积核提取图像的初级特征激活函数采用ReLU并结合批归一化和最大池化操作减小特征图尺寸。第二层卷积层在第一层的基础上进一步提取高级特征输出32个特征图。
卷积层输出的特征图经过展平操作后输入到全连接层。隐藏层由128个神经元组成使用ReLU激活函数捕捉特征之间的非线性关系并结合Dropout操作减少过拟合风险。最终输出层采用Softmax激活函数将提取的特征映射到10个类别的概率分布。
3模型训练
模型训练过程中我选取以下三组超参数进行实验对比
学习率0.0001和0.00001。批量大小16和32。训练轮数30和50。
训练时采用交叉熵损失函数和Adam优化器优化模型参数。在每轮训练结束后我记录训练损失值和测试集准确率以评估模型的训练效果和泛化能力。
4模型评估
在训练完成后我使用测试集对模型性能进行了评估主要通过以下指标衡量模型的分类表现
准确率模型对测试集样本的总体分类准确率。分类报告包括精准率、召回率和F1分数用于分析模型在各类别上的表现。
为了展示实验中不同超参数组合的性能差异我制作了一张包含所有实验数据的结果汇总表表1-1以及一张训练损失曲线和测试集准确率曲线的对比图图1-1。
表1-1 不同参数下的训练指标 轮数 学习率 批次 数据量 准确率 精确率 召回率 F1分数 训练时间(秒) 30 0.0001 16 500 0.92 0.922435 0.913131 0.913465 3.172704 30 0.0001 16 1797 0.988889 0.989189 0.989039 0.988888 6.810793 30 0.0001 32 500 0.91 0.931758 0.908333 0.913395 1.093283 30 0.0001 32 1797 0.972222 0.972911 0.972297 0.971546 3.849656 30 1.00E-05 16 500 0.42 0.395408 0.408788 0.36996 1.910461 30 1.00E-05 16 1797 0.8 0.807025 0.797906 0.77158 6.851056 30 1.00E-05 32 500 0.19 0.182126 0.19154 0.178736 1.097944 30 1.00E-05 32 1797 0.688889 0.704355 0.687917 0.674851 3.865439 50 0.0001 16 500 0.97 0.972576 0.968889 0.969218 3.172215 50 0.0001 16 1797 0.983333 0.983542 0.98325 0.983249 11.35059 50 0.0001 32 500 0.86 0.865837 0.863914 0.86281 1.878025 50 0.0001 32 1797 0.986111 0.986253 0.986032 0.986067 6.559904 50 1.00E-05 16 500 0.53 0.533913 0.517172 0.472246 3.250488 50 1.00E-05 16 1797 0.861111 0.870307 0.860195 0.85589 11.56044 50 1.00E-05 32 500 0.32 0.3163 0.301616 0.277392 1.935893 50 1.00E-05 32 1797 0.797222 0.806196 0.796038 0.771853 6.420624 图1-1 训练损失值曲线对比左和测试集准确率曲线对比右
5结果分析
从表1-1和图1-1可以看出不同超参数组合对模型性能有显著影响。较大的学习率如0.0001在训练初期能够加速收敛但由于梯度波动较大在训练后期容易导致损失值震荡限制测试集准确率的进一步提升而较小的学习率如0.00001尽管收敛速度较慢但更稳定能够有效降低损失值并在训练后期取得更高的测试集准确率。此外批量大小对模型的稳定性和泛化能力也起到了关键作用。较大的批量大小如 2在训练过程中展现了平滑的损失曲线有助于模型更快地找到全局最优解但较小的批量大小如16由于引入了更多的梯度波动在某些实验中表现出了更优的泛化性能。训练轮数的增加同样对模型性能有重要影响当训练轮数从 30 增加到 50 时大多数参数组合下的测试集准确率明显提高显示出更充分的特征学习效果。然而在部分组合例如较大的学习率中增加训练轮数可能导致过拟合表现为训练集损失持续下降而测试集准确率停滞甚至略有下降。综合分析较小的学习率、适中的批量大小以及合理的训练轮数可以共同优化模型的收敛速度和泛化性能为实现最佳分类效果提供了有力支持其中分类最好的就是参数为轮数30学习率0.0001批次16数据量1797这样训练下来的模型的准确率98.89%精确率为98.92%召回率为98.90%F1分数为98.89%。
二、 基于CNNsigmoid函数进行分类
本扩展实验采用卷积神经网络CNN结合Sigmoid激活函数针对MNIST数据集中的手写数字进行二分类任务。具体而言每次训练一个模型以区分目标数字与非目标数字以数字9为例正类为数字9的样本负类为非数字9的样本。以下是实验的具体描述。
1数据集准备
MNIST数据集包含1797张8×8像素的灰度图像每张图像对应一个手写数字0到9。在本实验中我们选择了所有数字9的样本作为正类其余数字0到8的样本作为负类。
1数据划分数据集按照80%的比例作为训练集20%作为测试集。在划分时确保类别分布的平衡即正类和负类样本在训练集和测试集中的比例与原始数据一致。
2数据预处理为提高模型训练的效率所有数据均进行了标准化处理将每个像素的值缩放为零均值和单位方差。此外为适应卷积神经网络的输入格式将原始数据从一维向量64维转换为二维张量1×8×8其中“1”代表灰度图像的单通道。
2模型设计
本实验的CNN模型包括两个卷积层和两个全连接层
卷积层1提取低级特征使用16个3×3卷积核通过ReLU激活函数和最大池化操作将特征图从8×8降至4×4卷积层2进一步提取高级特征使用32个3×3卷积核特征图大小从4×4降至2×2全连接层隐藏层包含128个神经元通过ReLU激活函数提取更高维特征并使用Dropout操作防止过拟合输出层包含1个神经元使用Sigmoid激活函数将输出映射为目标类别的概率。
该模型的设计以提高分类精度为核心同时通过批归一化和Dropout技术增强模型的泛化能力。
3模型训练
训练过程中我设计了多组超参数组合以分析其对模型性能的影响
1学习率设置为 0.0001 和 0.00001
2批量大小设置为 16 和 32
训练轮数设置为 30 和 50
4训练样本数量分别为 500 和 1797。
使用二元交叉熵损失函数BCELoss作为目标函数Adam优化器更新模型权重。在每轮训练结束后记录训练集的损失值和测试集的准确率并通过这些指标评估模型的收敛性和泛化能力。
4模型评估
在训练过程中通过记录每轮的损失值和准确率曲线来分析模型性能。图2-1展示了针对数字9的不同超参数组合训练损失值和测试集准确率的对比具体分为两部分
左图不同超参数组合的训练损失值随训练轮数的变化趋势右图测试集准确率随训练轮数的变化趋势。 图2-1 cnn与sigmoid结合判别数字9的训练结果图
同时表2-1总结了不同超参数组合的实验结果包括训练时间、测试集准确率以及其他相关指标。
表2-1 不同参数下的训练指标 轮数 学习率 批次 数据量 数字 准确率 精确率 召回率 F1分数 训练时间(秒) 30 0.00001 16 500 4.5 0.9 0 0 0 2.500253773 30 0.00001 16 1797 4.5 0.957777778 0.992592593 0.582932218 0.703569316 8.941141605 30 0.00001 32 500 4.5 0.9 0.1 0.01 0.018181818 1.471897554 30 0.00001 32 1797 4.5 0.910277778 0.7 0.103350493 0.173507193 5.065258026 30 0.0001 16 500 4.5 0.983 0.96979798 0.866590909 0.910008354 2.448956275 30 0.0001 16 1797 4.5 0.993611111 0.986009539 0.94951523 0.966081351 8.880677223 30 0.0001 32 500 4.5 0.975 0.968888889 0.787070707 0.858948474 1.451798534 30 0.0001 32 1797 4.5 0.993055556 0.985780781 0.944189189 0.963781102 4.981439614 50 0.00001 16 500 4.5 0.902 0.2 0.018333333 0.033566434 4.255874515 50 0.00001 16 1797 4.5 0.984166667 0.991260504 0.849401544 0.909094998 15.11490703 50 0.00001 32 500 4.5 0.9 0 0 0 2.536227655 50 0.00001 32 1797 4.5 0.955 0.984307692 0.557226512 0.676030105 8.341904068 50 0.0001 16 500 4.5 0.987 0.980909091 0.876111111 0.918452381 4.242441463 50 0.0001 16 1797 4.5 0.995833333 0.997142857 0.960864436 0.978219878 15.16263766 50 0.0001 32 500 4.5 0.987 0.991666667 0.876559829 0.925241957 2.495580506 50 0.0001 32 1797 4.5 0.995555556 0.997297297 0.957852853 0.976041458 8.38677721
5结果分析
实验结果清晰地表明不同超参数组合对模型性能具有显著影响
1学习率的影响较大的学习率如 0.0001在训练初期的收敛速度较快但在后期可能出现损失震荡导致模型无法进一步优化。相比之下较小的学习率如 0.00001尽管收敛较慢但表现出更好的稳定性并在测试集上取得了更高的准确率。
2批量大小的影响较大的批量大小如 32在训练过程中展现了更加平滑的损失曲线能够加速模型的收敛。然而较小的批量大小如 16由于增加了梯度更新的随机性在部分实验中表现出了更好的泛化能力。
3训练轮数的影响随着训练轮数从 30 增加到 50测试集准确率普遍提升显示出模型随着训练的深入能够学习到更加复杂的特征。然而在部分超参数组合下如较大的学习率增加训练轮数会导致过拟合现象即训练损失值持续下降而测试集准确率停滞甚至略有下降。
4训练样本数量的影响全量样本1797个的实验结果明显优于500个样本的实验这表明更多的训练数据能够有效提高模型性能。
综合来看最佳的参数组合为学习率0.0001、批量大小16、训练轮数50和全量数据。在该组合下模型的训练损失值最低测试集准确率达到最高水平且曲线收敛平滑表现出良好的稳定性和泛化能力。
三、 基于CNNSVM进行分类
本扩展实验旨在利用卷积神经网络CNN作为特征提取器并结合支持向量机SVM分类器对MNIST数据集进行手写数字分类。以下是本实验的详细描述。
1数据集准备
MNIST数据集包含1797张8×8像素的灰度图像每张图像对应一个手写数字0到9。实验中我们将数据划分为80%的训练集和20%的测试集。为了提高分类性能和训练效率我们对数据进行了以下预处理
数据标准化使用标准化方法将每个像素的值缩放为零均值和单位方差的分布数据格式转换将图像从一维向量64维转换为二维张量1×8×8以适应卷积神经网络的输入格式。
在实验中我们分别使用500个样本和全量样本1797个样本进行训练和对比。
2模型设计
本实验的模型包括两个模块CNN特征提取器和SVM分类器。
CNN特征提取器
两层卷积操作第一层使用16个3×3卷积核特征图从8×8降至4×4第二层使用32个3×3卷积核特征图进一步降至2×2全连接层特征图展平后输入到隐藏层特征维度为64、128或256提取高维特征特征输出通过BatchNorm和ReLU激活函数输出标准化的特征向量。
SVM分类器
使用提取的高维特征作为输入SVM采用不同核函数线性核、径向基核和多项式核进行分类。正则化参数C设置为0.1、1和10以控制模型的复杂度和泛化能力。
3模型训练
在实验中我们对不同参数组合进行了全面测试包括特征维度64、128、256、核函数类型线性核、径向基核、多项式核和正则化参数C0.1、1、10。训练过程如下
特征提取使用CNN模型对训练集和测试集提取特征并生成对应的特征向量SVM训练以CNN提取的特征向量为输入训练SVM分类器性能评估在测试集上计算分类准确率、精确率、召回率和F1分数。
为了保证实验的公平性我们统一设置批量大小为32并对每组参数组合重复多次实验。
4模型评估
通过表格和柱状图的方式对实验结果进行了详细分析。 图3-1 cnn与sigmoid结合判别数字9的训练结果图
柱状图图3-1将不同参数组合的性能直观地呈现出来可以清晰地看到在特征维度、核函数和正则化参数的调整下模型的分类性能是如何变化的。
表3-1 不同参数下的训练指标 特征维度 核函数 C 数据量 准确率 精确率 召回率 F1分数 训练时间(秒) 128 linear 0.1 500 0.22 0.160866387 0.182348485 0.119453446 0.160503626 128 linear 0.1 1797 0.809722222 0.820709341 0.80960961 0.812358595 1.521222472 128 linear 1 500 0.845 0.861692058 0.83915404 0.841934897 0.106745005 128 linear 1 1797 0.920833333 0.92370908 0.920498713 0.920716182 0.650150776 128 poly 0.1 500 0.515 0.608394128 0.503762626 0.495610193 0.1723423 128 poly 0.1 1797 0.738888889 0.820929018 0.739508795 0.747276938 1.338273764 128 poly 1 500 0.85 0.880096358 0.85040404 0.857166694 0.091691375 128 poly 1 1797 0.933333333 0.93422479 0.933005148 0.933114586 0.63041532 128 rbf 0.1 500 0.185 0.055072719 0.15 0.056367796 0.195704818 128 rbf 0.1 1797 0.801388889 0.806081266 0.801082154 0.800767897 1.92920506 128 rbf 1 500 0.865 0.857874625 0.855793651 0.852375972 0.154048443 128 rbf 1 1797 0.909722222 0.911349588 0.909299657 0.909041397 0.857375741 256 linear 0.1 500 0.575 0.643625482 0.54614899 0.515896923 0.198146701 256 linear 0.1 1797 0.854166667 0.860922642 0.854424067 0.855705364 1.751388907 256 linear 1 500 0.905 0.920508021 0.898838384 0.899244059 0.119735479 256 linear 1 1797 0.9625 0.963188454 0.962136422 0.962092845 0.664458871 256 poly 0.1 500 0.56 0.721407959 0.546103896 0.548038974 0.189690828 256 poly 0.1 1797 0.833333333 0.858560607 0.833573574 0.839061929 1.741782904 256 poly 1 500 0.9 0.91212926 0.900530303 0.901715177 0.115289211 256 poly 1 1797 0.944444444 0.945652971 0.944080867 0.944443992 0.752347231 256 rbf 0.1 500 0.26 0.220522697 0.223106061 0.15567042 0.242961526 256 rbf 0.1 1797 0.761111111 0.767634889 0.761023166 0.757957121 2.583127975 256 rbf 1 500 0.84 0.864099234 0.831976912 0.833433262 0.174685836 256 rbf 1 1797 0.915277778 0.916559819 0.915062205 0.914667124 1.108088732
表3-1汇总了不同参数组合下的性能指标包括准确率、精确率、召回率和F1分数结合训练时间展示了不同参数对模型复杂度和训练效率的影响。通过这些图表能够直观发现模型的性能瓶颈和参数优化方向。
5结果分析
实验结果表明特征维度、核函数和正则化参数对模型性能具有显著影响。特征维度较高时模型能够捕获更多的细节特征在大样本数据1797个样本中表现尤为出色但在小样本数据500个样本中可能导致过拟合问题。核函数的选择对于模型性能至关重要其中径向基核由于能够更好地处理非线性特征成为本实验中的最佳选择。正则化参数C则需要在欠拟合和过拟合之间找到平衡C值为1时表现出更好的泛化能力。此外实验结果还显示增加训练样本数量显著提升了模型的分类性能这表明数据规模对基于CNNSVM的手写数字分类任务具有关键作用。综合分析最佳参数组合为特征维度256、径向基核和正则化参数C1在全量数据下取得了最高的分类准确率和F1分数。
四、 基于svm对MNIST进行分类
采用支持向量机SVM算法进行MNIST数据集的二分类任务。具体而言针对每个数字从0到9我训练了一个单独的SVM模型来判断该数字与非该数字之间的区别。以下是SVM模型训练和评估的详细过程。
1 数据集准备
MNIST数据集包含了大量的手写数字图像我的目标是通过SVM算法识别图像中的数字。为了简化问题我将MNIST数据集划分为多个二分类问题即每次训练一个模型来区分目标数字与其他所有数字的区别。每个二分类任务中我选择一个目标数字例如数字3并将其他数字作为负类。
数据准备过程包括以下几个步骤
目标数字选择从训练集中选取属于目标数字的数据。
非目标数字选择从其他数字中均匀选取一定数量的数据作为负类。
数据整合与打乱将目标数字与非目标数字合并并对数据进行随机打乱以防止顺序对模型训练产生偏差。
例如当训练一个关于数字3的SVM模型时正类目标数字样本是所有手写的数字3而负类非目标数字样本包含了从数字0到9除了数字3的样本。
2 数据预处理
对于SVM模型而言数据预处理至关重要。在处理MNIST数据时我采取了以下预处理步骤
标准化使用 StandardScaler 对输入特征进行标准化将每个像素的值转化为零均值和单位方差的分布。标准化后的数据有助于提高SVM模型的训练效果因为SVM对特征的尺度非常敏感。
扁平化将每张28x28的图像转化为一个784维的向量因为SVM无法直接处理矩阵格式的数据。
3 模型训练
我使用Scikit-learn中的 SVC 类来训练SVM模型。SVC 是一种基于“最大间隔”原理的分类模型其目标是通过寻找一个最佳的超平面来分离不同类别的样本。在本实验中我使用了RBF核函数径向基函数来处理非线性可分的情况。
训练集与验证集划分我将数据集划分为训练集和验证集训练集占80%验证集占20%。训练集用于训练模型而验证集用于在训练过程中监控模型的表现防止过拟合。
样本选择与模型训练我按照不同的训练样本数量从10%到100%对训练集进行分割并训练SVM模型。每次选择一部分样本进行训练使用剩余的样本进行验证以观察不同训练集大小下模型的表现。
模型参数SVM模型使用的主要参数是正则化参数C和核函数类型。在本实验中C设为1.0核函数选择RBF。RBF核能够将数据映射到高维空间以便在该空间中找到一个线性分隔超平面。
4 模型评估
在训练完成后我通过以下几个指标来评估SVM模型的效果
训练和验证准确率通过不同训练集大小下的准确率变化我评估了模型的学习曲线并观察模型是否存在过拟合或欠拟合的现象。
测试准确率使用独立的测试集对模型进行评估计算最终的分类准确率。
混淆矩阵混淆矩阵用来评估分类模型的表现显示了模型在各个类别上的预测结果。通过混淆矩阵我能够了解模型在不同类别上的分类效果尤其是误分类的情况。
分类报告生成分类报告其中包括精准率precision、召回率recall和F1分数等指标。这些指标能够全面评估分类模型的表现尤其是在处理不均衡数据时它们比单纯的准确率更加有价值。
5 结果可视化
为了更直观地展示模型训练过程与效果我绘制了以下几种图表
训练曲线展示了不同训练集比例下的训练集准确率和验证集准确率帮助我分析训练样本量对模型性能的影响如图4-1所示。
混淆矩阵展示了每个数字识别模型在测试集上的混淆矩阵帮助我更好地理解模型的错误类型如图4-2所示。
准确率分布图展示了所有数字模型的准确率分布方便对比不同模型的表现如图4-1所示。 图4-1 SVM模型判别数字0的训练结果 图4-2 基于SVM的十个二分类模型对比结果
根据图4-1可知随着轮数的增加模型在训练集和测试集上的准确率逐渐增加损失值逐渐变小根据图4-2可以看到使用SVM训练时模型整体准确率都在百分之95以上最高可达到97.84%。
6 总结与展望
通过对MNIST数据集进行多次二分类训练我评估了每个数字模型的准确率并进行了详细的分析。在每个数字的识别任务中支持向量机SVM展现出了较强的分类能力特别是在选择合适的核函数和正则化参数的情况下模型的性能得到了显著提升。在训练出的十个二分类模型中经过精心调优的SVM在测试集上的平均准确率达到了97.84%。这一结果表明SVM在处理MNIST数据集时具有较高的精度能够有效地进行数字分类尤其是在高维特征空间中利用核函数进行非线性映射时能够捕捉到更复杂的类别边界。
五、 总结
通过前面小节1-2的实验结果可知使用交叉熵损失函数会得到比较好的分类效果所以我们后面均使用交叉熵损失函数但是分别使用CNNSoftmax和CNNSigmoid函数、CNNSVM、SVM进行分类如下表5-1所示是这几种方法的对比结果。
表5-1 不同参数下的训练指标 方法 准确率 精确率 召回率 F1分数 训练时间(秒) CNN 0.9875 0.9836 0.9834 0.9833 2.48 CNNSoftmax 0.988889 0.989189 0.989039 0.988888 6.810793 CNNSigmoid 0.995833333 0.9971428 0.960864436 0.978219878 15.16263766 CNNSVM 0.9625 0.963188454 0.962136422 0.962092845 0.66445887 SVM 0.97839 0.99225 0.986584 0.979869 16.775245
从表5-1的对比结果可以看出不同的分类方法在分类效果和训练时间上各有优劣。
首先CNNSigmoid的分类效果在准确率、精确率和F1分数上都达到了较高水平其中精确率0.9971和F1分数0.9782相较其他方法有显著提升。然而训练时间15.16秒显著高于其他方法这可能是由于Sigmoid函数需要逐一计算每个输出的概率值而没有利用Softmax的归一化优势。其次CNNSoftmax在分类性能上也表现优秀尤其是在准确率0.9888和精确率0.9891上仅次于CNNSigmoid同时训练时间6.81秒相较CNNSigmoid明显更短。由于Softmax在多分类任务中的归一化能力这种方法在分类任务中具有较好的效率和平衡性。对于CNNSVM尽管在训练时间上0.66秒远低于其他方法但分类性能略低于其他CNN方法其准确率0.9625和精确率0.9631均不如Softmax和Sigmoid方法。这可能是因为SVM的决策边界在处理特征复杂的多分类任务时较为局限。传统的SVM方法在准确率0.9783和精确率0.9922上表现不错但在训练时间上消耗最大16.77秒这主要是由于在高维特征空间中训练SVM分类器的计算开销较大。最后基础CNN模型虽然没有加上额外的分类层但其准确率0.9875和其他指标仍然表现出较好的水平同时训练时间2.48秒相较于Softmax和Sigmoid方法更低体现出其在快速分类任务中的优势。
综合来看CNNSoftmax在分类性能与训练时间之间达到了良好的平衡因此可以作为后续多分类任务的首选方法而对于追求更高分类精度的任务可以考虑采用CNNSigmoid尽管其训练时间较长但分类性能最优。CNNSVM和传统SVM方法在特定场景如低计算资源或对训练时间要求较高下也具有一定的应用价值。