【MATLAB第46期】基于MATLAB的改进模糊卷积神经网络IFCNN分类预测模型

简介: 【MATLAB第46期】基于MATLAB的改进模糊卷积神经网络IFCNN分类预测模型

【MATLAB第46期】基于MATLAB的改进模糊卷积神经网络IFCNN多分类预测模型


一、展示效果


二、思路


在正常CNN卷积神经网络训练阶段之后,使用进化算法(蜜蜂算法)拟合深度学习权重和偏差。


本文案例数据中, 用深度模型进行4分类预测。


先在 CNN 训练之后,为每个类别权重创建初始模糊模型

然后提取全连接层的权重进行进化寻优,并替换初始权重

最后,优化后的权重(来自全连接层)建立模型。

数据情况:

 %%  导入数据
res = xlsread('数据集.xlsx');
%%  划分训练集和测试集
temp = randperm(357);
P_train = res(temp(1: 240), 1: 12)';
T_train = res(temp(1: 240), 13)';
M = size(P_train, 2);
P_test = res(temp(241: end), 1: 12)';
T_test = res(temp(241: end), 13)';
N = size(P_test, 2);
%%  数据归一化
[P_train, ps_input] = mapminmax(P_train, 0, 1);
P_test  = mapminmax('apply', P_test, ps_input);
t_train =  categorical(T_train)';
t_test  =  categorical(T_test )';
%%  数据平铺
%   将数据平铺成1维数据只是一种处理方式
%   也可以平铺成2维数据,以及3维数据,需要修改对应模型结构
%   但是应该始终和输入层数据结构保持一致
p_train =  double(reshape(P_train, 12, 1, 1, M));
p_test  =  double(reshape(P_test , 12, 1, 1, N));

三、CNN结构参数


%%  构造网络结构
layers = [
 imageInputLayer([12, 1, 1])             % 输入层
 convolution2dLayer([2, 1], 16)          % 卷积核大小为2*1 生成16个卷积
 batchNormalizationLayer                 % 批归一化层
 reluLayer                               % relu激活层
 maxPooling2dLayer([2, 1], 'Stride', 1)  % 最大池化层 大小为2*1 步长为2
 convolution2dLayer([2, 1], 32)          % 卷积核大小为2*1 生成32个卷积
 batchNormalizationLayer                 % 批归一化层
 reluLayer                               % relu激活层
 maxPooling2dLayer([2, 1], 'Stride', 1)  % 最大池化层,大小为2*2,步长为2
 fullyConnectedLayer(4)                  % 全连接层(类别数) 
 softmaxLayer                            % 损失函数层
 classificationLayer];                   % 分类层
%%  参数设置
options = trainingOptions('adam', ...      % Adam 梯度下降算法
    'MaxEpochs', 500, ...                  % 最大训练次数 500
    'InitialLearnRate', 1e-3, ...          % 初始学习率为0.001
    'L2Regularization', 1e-04, ...         % L2正则化参数
    'LearnRateSchedule', 'piecewise', ...  % 学习率下降
    'LearnRateDropFactor', 0.5, ...        % 学习率下降因子 0.1
    'LearnRateDropPeriod', 450, ...        % 经过450次训练后 学习率为 0.001 * 0.5
    'Shuffle', 'every-epoch', ...          % 每次训练打乱数据集
    'ValidationPatience', Inf, ...         % 关闭验证
    'Plots', 'none', ...      % 画出曲线
    'Verbose', 1);


四、IFCNN结构参数

Params.MaxIt=20;%进化算法迭代次数
Params.nScoutBee = 10;%进化算法种群数量
%  训练模型
[net,info] = trainNetwork(p_train, t_train, layers, options);
% 提取全连接层的权重进行进化
FullConn=netobj.Layers(10, 1).Weights;
netbias=netobj.Layers(10, 1).Bias;
%% 为每个类权重制作基本模糊模型
% 模糊 C 均值 (FCM) 簇数
ClusNum=3; 
% 为每个类别权重创建初始模糊模型
for i=1:sizefinal
fism{i}=GenerateFuzzy(datam{i},ClusNum);
end
%% 训练输出提取
for i=1:sizefinal
TrTar{i}=datam{i}.TrainTargets;
TrInp{i}=datam{i}.TrainInputs;
TrainOutputs{i}=evalfis(TrInp{i},BeesFISm{i});
end;
% 将输出单元格转换为矩阵
for i=1:sizefinal
EvolvedFullConn(i,:)=TrainOutputs{i}';
end;
%% 替换进化的权重
netobj.Layers(10, 1).Weights=EvolvedFullConn;
% 新网络
net2=netobj.Layers;


五、代码获取


后台私信回复“45期”获取下载链接。


相关文章
|
2天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
47 31
|
2天前
|
算法
基于Adaboost模型的数据预测和分类matlab仿真
AdaBoost(Adaptive Boosting)是一种由Yoav Freund和Robert Schapire于1995年提出的集成学习方法,旨在通过迭代训练多个弱分类器并赋予分类效果好的弱分类器更高权重,最终构建一个强分类器。该方法通过逐步调整样本权重,使算法更关注前一轮中被误分类的样本,从而逐步优化模型。示例代码在MATLAB 2022A版本中运行,展示了随着弱分类器数量增加,分类错误率的变化及测试数据的分类结果。
|
10天前
|
机器学习/深度学习 算法 Python
基于BP神经网络的金融序列预测matlab仿真
本项目基于BP神经网络实现金融序列预测,使用MATLAB2022A版本进行开发与测试。通过构建多层前馈神经网络模型,利用历史金融数据训练模型,实现对未来金融时间序列如股票价格、汇率等的预测,并展示了预测误差及训练曲线。
|
8天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
11天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
18天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-GRU网络的数据分类识别算法matlab仿真
本项目展示了使用MATLAB2022a实现的贝叶斯优化、CNN和GRU算法优化效果。优化前后对比显著,完整代码附带中文注释及操作视频。贝叶斯优化适用于黑盒函数,CNN用于时间序列特征提取,GRU改进了RNN的长序列处理能力。
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】26.卷积神经网络之AlexNet模型介绍及其Pytorch实现【含完整代码】
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
【从零开始学习深度学习】28.卷积神经网络之NiN模型介绍及其Pytorch实现【含完整代码】
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch代码实现神经网络
这段代码示例展示了如何在PyTorch中构建一个基础的卷积神经网络(CNN)。该网络包括两个卷积层,分别用于提取图像特征,每个卷积层后跟一个池化层以降低空间维度;之后是三个全连接层,用于分类输出。此结构适用于图像识别任务,并可根据具体应用调整参数与层数。
|
4月前
|
机器学习/深度学习 数据可视化 Python
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
该博客展示了如何通过Python预处理神经网络权重矩阵并将其导出为表格,然后使用Chiplot网站来可视化神经网络的神经元节点之间的连接。
60 0
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码

热门文章

最新文章