MATLAB 的trainNetwork变化

1 问题

从2018版开始用深度学习功能,matlab的函数在不断的演化,老程序就不能用了。

net = trainNetwork(XTrain,YTrain,layers,options);
原来Xtrain 可以为4d数据,Ytrain 为数据标签。

现在xtrain需要为2dcell数据

 Ytrain 没有变化

 如果在新版本使用,可以有2种方法

1 转为图片;

2 使用aug

%test
imageSize = [28 28 1];
augimds = augmentedImageDatastore(imageSize,XTrain,YTrain);

2 使用方法

转为cell数组

% 转换数据 20220930
% imageSize = [28 28 1];
% augimds = augmentedImageDatastore(imageSize,train,train_label);
%转为cell 数组
Xtrain=cell(size(train,4),1);
Xval=cell(size(Vali,4),1);
Xtest=cell(size(test,4),1);
%赋值
for i=1:size(train,4)
    Xtrain{i}=train(:,:,1,i);
end
for i=1:size(Vali,4)
    Xval{i}=Vali(:,:,1,i);
end 

for i=1:size(test,4)
    Xtest{i}=test(:,:,1,i);
end

问题发现在于 option设置不对

原来的option为这个。。

miniBatchSize = 64;
validationFrequency = floor(numel(train_label)/miniBatchSize);
%修改为adam
options = trainingOptions('sgdm', ...
    'InitialLearnRate',0.005, ...
    'MaxEpochs',15, ...
    'Shuffle','every-epoch', ...
    'ValidationData',{Xval,Vali_label}, ...
    'ValidationFrequency',validationFrequency, ...
    'Verbose',false, ...
    'Plots','training-progress');

简化的option可以运行

options = trainingOptions('sgdm', 'Plots', 'training-progress');
% train the network
 Anet  = trainNetwork(train,train_label,layers,options);

是修改程序 导致 验证集的 大小不匹配。看了trainnetwork 源码 才意识到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一个码农都是奢望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值