如何使用matlab定义一个网络框架,并导入自己的数据进行训练,在进行某个项目开发的过程中,我用到了matlab进行深度学习算法的仿真,在网上找了挺多资料,并没有类似的案列,所以写博客记录一下,希望对大家有所帮助。
我是用的matlab版本为2023b,使用表格数据,自定义网络框架进行训练。
第一步,当然是制作自己的表格数据集,如果是其他类型的输入数据,请参考其他案例哦,我这个是表格数据。
第二步,打开matlab,定义自己的网络框架,在命令行窗口输入“deepNetworkDesigner”或者在APP栏找到这个
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/645f8de1352942dbaf1c1c001c66b3c0.jpeg#pic_center)
打开网络编辑器,根据自己的需要选择网络模块,然后连接并定义输入,以及每层的输出,如图:
每个网络层的输出以及其他设置,选择它就可以看到它的设置信息,设置好后,点击导出即可,然后就可以在工作区有一个layers_1的变量,即定义的模型框架。
dataFile = '**.csv';
dataTable = readmatrix(dataFile, 'Delimiter', ',');
% 转换`table`为数组
XTrainOrig = dataTable(:, 1:end-1);
TTrainOrig = dataTable(:, end);
% 存储归一化参数
XMin = min(XTrainOrig,[],1);
XMax = max(XTrainOrig,[],1);
TMin = min(TTrainOrig,[],1);
TMax = max(TTrainOrig,[],1);
% 归一化特征数据和目标数据
for i=1:size(XTrainOrig,1)
XTrain(i,:) = (XTrainOrig(i,:) - XMin) ./ (XMax - XMin);
end
TTrain = (TTrainOrig - TMin) ./ (TMax - TMin);
batchSize = 64; % 例如,这里设置批量大小为32
% 调整批量大小为实际数据点数的因子
rem = mod(size(XTrain, 1), batchSize);
if rem > 0
XTrain = XTrain(1:end-rem, :);
TTrain = TTrain(1:end-rem, :);
end
% 定义神经网络层和训练选项
layers = layers_1;
% 用于测试的数据应该是归一化后的
XTest = XTrain(1, :); % 假设测试数据是第一个训练样本
% % 定义神经网络层和训练选项
options = trainingOptions('adam', ...
'MaxEpochs', 300, ...
'InitialLearnRate', 0.001, ...
'Shuffle', 'every-epoch', ...
'GradientThreshold', 1, ...
'Verbose', false, ...
'MiniBatchSize',64, ...
'Plots', 'training-progress'...
);
% 训练神经网络
net = trainnet(XTrain,TTrain,layers,"mse",options);
% 用于测试的数据应该是归一化后的
% 预测,测试数据可以将训练数据分开,我这并未将其分开
YTest = predict(net, XTest);
% 反归一化预测结果
YTestDenormalized(i,:) = YTest * (TMax - TMin) + TMin;
% 保存网络层到文件
save('networkLayers.mat', 'layers');
至此训练完成。