当前位置: 首页 > news >正文

微信群网站有哪些中小型网站建设哪家好

微信群网站有哪些,中小型网站建设哪家好,商务平台搭建,中国建筑网官网电工证证件查询上一篇我们讲了使用CNN进行分类的MATLAB代码。 这一篇我们讲CNN的多变量回归预测。 是的#xff0c;同样是傻瓜式的快速实现。 一、什么是多变量回归预测 多变量回归预测则是指同时考虑多个输入特征进行回归预测。举几个例子#xff1a; 房价预测#xff1a;给定一组房…上一篇我们讲了使用CNN进行分类的MATLAB代码。 这一篇我们讲CNN的多变量回归预测。 是的同样是傻瓜式的快速实现。 一、什么是多变量回归预测 多变量回归预测则是指同时考虑多个输入特征进行回归预测。举几个例子 房价预测给定一组房产的特征如面积、卧室数量、浴室数量、地理位置等预测房产的销售价格。股票价格预测使用历史股票价格、交易量、财务指标等信息预测未来某个时间点的股票价格。销售预测基于历史销售数据、季节性、促销活动等信息预测未来某个时间段的销售额。能源需求预测考虑天气条件、时间如一天中的时间、一周中的哪一天、一年中的哪个月份等、历史能源需求等因素预测未来的能源需求。疾病风险预测根据患者的年龄、性别、生活习惯、基因信息等预测患者罹患某种疾病的风险。 在许多实际问题中我们通常需要考虑多个输入特征。虽然 CNN 最初是为图像分类问题设计的但它也可以应用于回归预测问题。在这种情况下CNN 的目标不再是预测输入图像的类别而是预测一个连续的目标值。为此我们可以将 CNN 的最后一层全连接层修改为输出一个单一的连续值然后使用一个回归损失函数如均方误差来训练网络。 CNN 由于其强大的特征提取能力特别适合处理这种多变量的回归预测问题。 这篇文章我们就以房价预测为例吧 二、一个简单的案例——波士顿房价预测 下面我们将演示如何使用 MATLAB 的深度学习工具箱实现一个卷积神经网络CNN来进行波士顿房价的多变量回归预测。我们将使用波士顿房价数据集来训练我们的模型该数据集包含波士顿城郊区域的房屋的多个特性如犯罪率、房间数量、教师学生比例等和房价。如下图每组房价数据由13个相关属性即13个指标变量1个目标变量房价组成总共有506组数据即为506*14的数组。 房价数据 1. 数据预处理 首先我们从 housing.txt 中读取数据。 代码将数据分割为训练集和测试集其中70%的数据用于训练30%的数据用于测试。训练和测试数据的划分是随机的但是通过设置随机种子rng(1)我们保证每次运行代码时都能得到相同的分割。 %% 1.数据预处理 data readmatrix(housing.txt); %读取数据文件 rng(1);%设置随机种子% 分割数据为训练集和测试集 trainRatio 0.7; % 70% 用于训练其余的用于测试 trainCount floor(size(data, 1) * trainRatio); trainData data(1:trainCount, :); testData data(trainCount1:end, :);% 分割输入特征和目标变量 XTrain trainData(:, 1:end-1); YTrain trainData(:, end); XTest testData(:, 1:end-1); YTest testData(:, end); 2. 数据归一化 归一化是一个很重要的步骤它能使不同范围和单位的特征值在模型训练中有着相同的权重。注意使用训练集的参数最大值、最小值来归一化测试集以保持数据的一致性。 这里采用的是mapminmax方法是一种常用的归一化方法将数据映射到[-1, 1]区间。在后续步骤中预测出的结果需要反归一化回原始数据的范围要保证使用正确的参数和方法。 %% 2. 数据归一化 methodmapminmax; [XTrainMap,inputps]method(XTrain); XTestMapmethod(apply,XTest,inputps); [YTrainMap,outputps]method(YTrain); YTestMapmethod(apply,YTest,outputps); 3. 数据转换 在这里我们将数据转换成 CNN 模型可以接受的格式。 在CNN网络中需要输入的是四维数组而我们演示数据是二维的506*14。 如果数据形状和 CNN 模型的输入层不匹配会出现错误因此这一步需要特别小心。 %% 3. 数据转换 XTrainMapDreshape(XTrain,[size(XTrain,1),1,1,length(XTrain)]);%训练集输入 XTestMapD reshape(XTest, [size(XTest,1),1,1,length(XTest)]); %测试集输入 4. 构建 CNN 模型 在定义 CNN 模型时要确保各层的参数如卷积核大小、步长等设置得当。不合适的参数可能会导致模型训练的效果不佳。关于CNN模型的理论讲解大家可以看一下我之前发的文章讲的可以说比较详细了。 Mr.看海【深度学习-第2篇】CNN卷积神经网络30分钟入门足够通俗易懂了吧图解 看完上边的文章相信大家就知道下边的参数该怎么设置了吧如果不知道可以继续往后看 %% 4.构建 CNN 模型 % 创建层 layers [imageInputLayer([size(XTrain, 1),1 1]) % 输入层convolution2dLayer([3,1],64,Stride,1,Padding,1) % 卷积层batchNormalizationLayerreluLayer %ReLU激活函数层fullyConnectedLayer(1) % 全连接层regressionLayer]; % 回归层% 显示层信息 analyzeNetwork(layers) 5. 指定训练选项 %% 5.指定训练选项 options trainingOptions(sgdm, ...%求解器sgdm默认 | rmsprop | adamExecutionEnvironment,auto, ...GradientThreshold,1, ... %梯度极限MaxEpochs,100, ...%最大迭代次数InitialLearnRate, 0.03, ...%初始化学习速率ValidationFrequency,10, ...%验证频率即每间隔多少次迭代进行一次验证MiniBatchSize,128, ...LearnRateSchedule,piecewise, ...%是否在一定迭代次数后学习速率下降LearnRateDropFactor,0.9, ...%学习速率下降因子LearnRateDropPeriod,10, ...SequenceLength,longest, ...Shuffle,never, ...ValidationData,{XTestMapD,YTestMap},...Verbose,true, ...Plots,training-progress);%显示训练过程% 训练模型 net trainNetwork(XTrainMapD,YTrainMap,layers,options); 这段代码是使用 MATLAB 的深度学习框架来配置神经网络训练的参数。它创建了一个名为 options 的训练选项对象这个对象包含了一系列用于训练神经网络模型的参数设置。 这些参数将会影响神经网络训练的效率和结果。通过调整这些参数我们可以优化模型的训练过程以得到更好的模型效果。 展开说的话其中每个参数的具体含义如下 sgdm这是训练算法sgdm 代表带有动量的随机梯度下降Stochastic Gradient Descent with Momentum。这是一种常用的优化算法。 ExecutionEnvironment, auto此选项指定了训练算法的执行环境。可选值包括 autocpugpu 和 multi-gpu。其中auto 表示 MATLAB 自动选择最佳环境cpu 和 gpu 分别表示在 CPU 或 GPU 上执行训练而 multi-gpu 表示在多个 GPU 上执行训练。 GradientThreshold, Inf这个参数设置了梯度裁剪阈值当梯度的绝对值超过此阈值时梯度将被裁剪。这是防止梯度爆炸的一种方法。在这个例子中阈值设置为 Inf意味着梯度裁剪实际上没有被激活。 MaxEpochs, 30此参数设定了模型训练的最大迭代次数。一次迭代也称 epoch意味着模型已经完整地学习过一次完整的训练集。在这个例子中模型将会进行 30 次迭代。 InitialLearnRate, 0.001此参数设定了学习率的初始值。学习率是优化算法的一个重要参数决定了模型参数更新的步长。如果学习率太大可能导致模型无法找到最优解如果学习率太小可能导致模型收敛速度过慢。 MiniBatchSize, 16此参数设定了每次训练的小批量数据的大小。使用小批量可以加快模型训练速度并且可以增加训练过程的随机性有助于提高模型的泛化能力。 LearnRateSchedule, piecewise此参数设定了学习率的调整策略。piecewise 表示分段恒定策略即在特定的迭代次数学习率会乘以一个因子由 LearnRateDropFactor 参数设定。 LearnRateDropFactor, 0.9此参数设定了学习率调整的因子只在 LearnRateSchedule 参数设定为 piecewise 时有效。在每个 LearnRateDropPeriod 周期后学习率会乘以这个因子。 LearnRateDropPeriod, 10此参数设定了学习率调整的周期只在 LearnRateSchedule 参数设定为 piecewise 时有效。每过这么多个迭代周期学习率会按照 LearnRateDropFactor 设定的因子进行调整。 SequenceLength, longest此参数设定了序列处理方式可选值有 longestshortest 或一个正整数。longest 表示使用最长的序列长度shortest 表示使用最短的序列长度指定一个正整数则表示所有的序列都将被填充或者截断到这个长度。 Shuffle, every-epoch此参数设定了训练数据的混洗策略。every-epoch 表示在每次迭代开始时都会重新混洗训练数据。这可以增加训练的随机性有助于提高模型的泛化能力。 Verbose, 1此参数设定是否在训练过程中打印详细信息。如果设定为 1那么在每次迭代完成后都会打印出一些信息例如当前的迭代次数、损失函数的值等。 Plots, training-progress设置了是否在训练过程中显示训练进度的图表如果不显示可以设置为none。 虽然这些设置内容看起来蛮多但是真正核心的是以下这几个参数在网络调试过程中需要重点调试 MaxEpochs最大迭代次数决定了模型在训练集上学习的次数。如果设定的迭代次数太少模型可能无法充分学习反之如果迭代次数过多可能会导致过拟合。 InitialLearnRate初始学习率对模型的训练速度和效果有很大影响。学习率太大可能会导致模型无法收敛学习率太小则可能导致训练速度过慢。此外学习率的设定也会影响到学习率调整策略的效果。 MiniBatchSize小批量大小影响了每次参数更新的计算效率和准确性。较小的批量大小可以增加模型训练的随机性有助于防止过拟合但也可能导致训练过程变慢。 LearnRateSchedule LearnRateDropFactor LearnRateDropPeriod这三个参数共同设定了学习率的调整策略。适当的调整学习率可以帮助模型更快地收敛并达到更好的效果。 6. 对测试集进行预测 使用训练好的模型对测试集进行预测时要确保预测函数的使用正确。同时预测完成后我们需要将数据进行反归一化以还原到原始数据的范围。 %% 6.对测试集进行预测 YPred predict(net,XTestMapD); % 反归一化 foreDatadouble(method(reverse,double(YPred),outputps)); 7. 对训练集进行拟合 对训练集进行拟合的步骤和测试集类似也需要注意预测函数的正确使用和数据的反归一化。 %% 7.对训练集进行拟合 YpredTrain predict(net,XTrainMapD); % 反归一化 foreDataTraindouble(method(reverse,double(YpredTrain),outputps)); 8. 训练集预测结果对比 通过可视化的方式对比模型的预测值和实际值可以更直观地看到模型的预测效果。 %% 8. 训练集预测结果对比 figure(Color,w) plot(foreDataTrain,-,Color,[255 0 0]./255,linewidth,1,Markersize,5,MarkerFaceColor,[250 0 0]./255) hold on plot(YTrain,-,Color,[150 150 150]./255,linewidth,0.8,Markersize,4,MarkerFaceColor,[150 150 150]./255) legend(CNN训练集预测值,真实值) xlabel(预测样本) ylabel(预测结果) xlim([1, length(foreDataTrain)]) grid axgca;hold on 9. 测试集预测结果对比 测试集的预测结果对比是评估模型性能的重要步骤。同样我们也要通过可视化来直观地观察模型在未见过的数据上的表现。 %% 9. 测试集预测结果对比 figure(Color,w) plot(foreData,-,Color,[0 0 255]./255,linewidth,1,Markersize,5,MarkerFaceColor,[0 0 255]./255) hold on plot(YTest,-,Color,[0 0 0]./255,linewidth,0.8,Markersize,4,MarkerFaceColor,[0 0 0]./255) legend(CNN测试集预测值,真实值) xlabel(预测样本) ylabel(预测结果) xlim([1, length(foreData)]) grid axgca;hold on 运行上述代码可以得到以下几张图 收敛过程 训练集拟合结果 测试集预测结果 三、“一行代码”实现CNN回归预测任务 上边章节演示了使用MATLAB实现CNN回归预测的基础代码演示不过我们在实际研究中可能会面临更为复杂的困境 导入自己的数据后网络结构一改就频频报错代码被改得乱七八糟看的头大不知道该画哪些图、怎么画图想要学习更规范的代码编程…… 按照本专栏的惯例笔者封装了快速实现CNN回归预测的函数在设定好相关参数后只需要一行代码就可以实现数据集训练集/验证集/测试集快速划分、快速绘制训练集/测试集预测结果对比图、绘制预测误差图导出训练过程数据、计算MAE/MSE/MAPE/RMSE/R等指标等等常用功能这个函数的介绍如下 function [foreData,foreDataTrain,net,info] FunRegCNNs(dataX,dataY,trainR,cLayer,poolingLayer,fcLayer,options,figflag) % 使用CNN进行回归预测的快速实现函数 % 该函数需要输入的数据为array数组型 % 输入 % dataX输入数据R*Q的矩阵R为输入数据的维度Q为批次数输入该变量时一定要注意维度正确 % 例对于一维特征每组数据长度为20共1000组数据则dataX的可以维度为20*1000 % dataY输出结果 % trainR数据集中训练集划分比例如trainR 0.6则代表60%数据用于训练集40%数据用于测试集% cLayer卷积层结构为n*5的二维数组其中n为卷积层的数量 % 列向的5个维度时分别代表滤波器的高、滤波器的宽、滤波器数量、步长、填充 % 例cLayer [3,1,16,1,1;3,1,32,1,0]时则代表有两层卷积层其中第一层滤波器高为3宽为1滤波器数量为16步长1填充1 % 第二次滤波器高为3宽为1滤波器数量为32步长1填充0% poolingLayer池化层结构为长度为n*5的cell数据其中n为池化层的数量和卷积层层数相同。 % 列向的三个维度分别代表1.池化层类型分为maxPooling2dLayer和averagePooling2dLayer两种如果不用池化层设置为none % 2.池化区域高度尺寸 % 3.池化区域宽度尺寸 % 4.步长 % 5.填充 % 例如 % poolingLayer {maxPooling2dLayer,2,1,2,1; averagePooling2dLayer,2,1,1,0}; % 代表第一个池化层为最大池化层尺寸为2*1步长2填充1第二个池化层为平均池化层尺寸为2*1步长1填充0 % 注意如果对应卷积层后不设置池化层请在对应的位置设置为none,0,0,0,0 % 比如cLayer设置为两层时如果只想在第一层卷积层后对应有池化层第二层卷积层后无池化层那么池化层应该设置为 % poolingLayer {maxPooling2dLayer,1,2,1,0; % none,0,0,0,0 }; %后边的四个0主要是占位不起实际作用% options一些与网络训练等相关的设置使用结构体方式赋值比如 options.MaxEpochs 1000具体包括 % solverName求解器sgdm默认 | rmsprop | adam % MaxEpochs最大迭代次数默认30 % MiniBatchSize批尺寸默认128 % GradientThreshold梯度极限默认为Inf % InitialLearnRate初始化学习速率默认0.005 % Plots是否显示训练过程none 为不显示默认 | training-progress为显示 % ValidationFrequency验证频率即每间隔多少次迭代进行一次验证默认50 % LearnRateSchedule即LearnRateSchedule是否在一定迭代次数后学习速率下降 LearnRateSchedule piecewise为使用none为不使用默认 % LearnRateDropPeriod即LearnRateDropPeriod学习速率下降时的迭代数默认为10 % LearnRateDropFactor即LearnRateDropFactor学习速率下降因子下降后变为LearnRateDropFactor*InitialLearnRateLearnRateSchedule为0时可以赋0默认为0.1 % 未启用NorFlag即Normalization Flag设置为1时则在程序中进行数据归一化和反归一化操作否则不进行建议设置为1 % SeedFlag随机种子标志设置为1时启用随机种子,(默认为1) % fcLayer全连接层可以设置多层如果设置fcLayer[]则在网络结构中只包含一个全连接层输出的维度与数据类别相同。 % 如果设置fcLayer为数组则代表在上边的全连接层之前再加入对应数量的全连接层和ReLU层 % 例如设置fcLayer[32,16]则代表在共有三个全连接层第一个是fullyConnectedLayer(32)ReLU第二个是fullyConnectedLayer(16)ReLU % 第三个是fullyConnectedLayer(numClasses) % figflag是否画图on为画图off为不画 % 输出 % foreData测试集的回归预测结果 % foreDataTrain:训练集的回归预测结果 % net训练好的网络 % info神经网络训练相关参数如loss值、准确度等 看注释写的蛮多的似乎有点唬人其实使用起来比较简单。 例如上边波士顿房价预测的案例整个第二章节代码可以用下述几行轻松实现 %% 1.加载数据 boston readmatrix(housing.txt); %读取数据文件 % 将数据转为函数要求的格式 dataX boston(:,1:13); %前13列数据为输入数据 dataY boston(:,14); %第14行为房价数据 %% 2.调用函数进行回归预测 divideR 0.7; %训练集/验证集/测试集比例 figflag on; % 是否画图on为画图off为不画%% 3.指定训练选项 options.solverName sgdm; %求解器sgdm默认 | rmsprop | adam options.MaxEpochs 100; %最大迭代次数默认30 options.InitialLearnRate 0.03; %初始化学习速率默认0.005 options.Plots training-progress; %是否显示训练过程none 为不显示默认 | training-progress为显示 options.ValidationFrequency 10; %验证频率即每间隔多少次迭代进行一次验证 options.LearnRateSchedule piecewise; %是否在一定迭代次数后学习速率下降 options.LearnRateDropFactor 0.9; %学习速率下降因子 options.LearnRateDropPeriod 100; %学习速率下降时的迭代数 options.Plots training-progress; %显示训练过程 options.GradientThreshold 1; %梯度极限默认为Inf%% 4.网络结构设置 conLayer [3,3,16,1,1]; %波器高为3宽为3滤波器数量为128步长1填充1 poolingLayer {none,0,0,0,0}; %不设置池化层 fcLayer []; %% 5.调用函数进行分类 [accuracy,net,info] FunRegCNNs(dataX,dataY,divideR,conLayer,poolingLayer,fcLayer,options,figflag);上述代码中留下需要设置的都是必要的参数这也是为了在保证代码易用性的同时充分保证灵活性。 运行上述代码可以得到一系列图片和指标这些在写论文过程中都是很有用的。 具体包括 收敛过程图 网络结构图 训练过程中损失值和RMSE收敛图 训练集拟合结果对比图 训练集预测结果相对误差 测试集拟合结果对比图 测试集预测结果相对误差 在命令行窗口还会打印出以下内容 网络结构 每层网络的输出尺寸 MAE/MSE/MAPE/RMSE/R等指标 三、总结 使用封装函数对复杂的CNN训练和评估流程进行了高度封装大家只需要提供数据和指定参数就可以轻松进行模型的训练和评估大大减轻了同学们负担另外函数接收多个参数作为输入包括网络结构和训练选项等使得用户可以根据自己的需求灵活地定制和配置模型适应各种不同的应用场景此函数不仅实现了CNN模型的训练还对模型的性能进行了全面评估并返回了训练过程中的详细信息助力用户快速理解模型的性能并进行后续的优化调整。 需要上述案例的代码和封装函数的代码同学们可以在下述链接获取 使用CNN进行回归预测代码 - 工具箱文档 | 工具箱文档 关于CNN的理论讲解可以看这里 Mr.看海【深度学习-第2篇】CNN卷积神经网络30分钟入门足够通俗易懂了吧图解 关于MATLAB快速实现CNN分类可以看这里 Mr.看海【深度学习-第3篇】使用MATLAB快速实现CNN分类模式识别任务含一维、二维、三维数据演示案例
http://www.zqtcl.cn/news/360075/

相关文章:

  • 青岛网站建设制作软件开发培训学校排行
  • pk10网站怎么做网站建设名词
  • 秦皇岛哪有网站优化公司wordpress看图插件
  • ps做网站宽度想做个网站要多少钱
  • 马克斯网站建设外贸电商平台哪个网站最好
  • 国外网站做任务套利网络推广员怎么做
  • 如何创建一个网站用来存放东西wordpress 可以干嘛
  • 做健身俱乐部网站的目的和意义商超网站
  • 网站点击排名phpcms安装
  • 鹧鸪哨网站1v1深度开发最吸引人的营销广告文案
  • 网站建设可以学吗如何修改wordpress的登录
  • 保定做网站的公司百度软件商店
  • 金华市金东区建设局网站wordpress好看的下载页面
  • 英文网站seo发展前景成都网站开发建设推广
  • p2p网贷网站建设方案制作网站专业公司吗
  • 益阳网站建设企业房地产市场最新动态
  • 关于公司网站改版通知jmr119色带
  • 城关区建设局网站珠海中英文网站建设
  • 长春哪家做网站便宜手机英语网站
  • 应城网站建设莱芜拉呱
  • 如何建立淘宝客网站HTML网站建设课程
  • 网站建设供需chrome不安全的网站设置
  • 网站dns修改中国楼市未来发展趋势
  • 网站超级链接怎么做帮别人发广告赚钱平台
  • 做网站可以赚钱么注册做网站的公司
  • 河南省建协网官方网站建网站卖阀门
  • 医院网站怎么制作重庆安全监督工程信息网
  • 饰品网站建设规划书搭建微信网站
  • 开发网站访问流量赚钱加盟网站需要怎么做
  • 装饰协会网站源码湖南省郴州市北湖区