• 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数组

    1. % 转换数据 20220930
    2. % imageSize = [28 28 1];
    3. % augimds = augmentedImageDatastore(imageSize,train,train_label);
    4. %转为cell 数组
    5. Xtrain=cell(size(train,4),1);
    6. Xval=cell(size(Vali,4),1);
    7. Xtest=cell(size(test,4),1);
    8. %赋值
    9. for i=1:size(train,4)
    10. Xtrain{i}=train(:,:,1,i);
    11. end
    12. for i=1:size(Vali,4)
    13. Xval{i}=Vali(:,:,1,i);
    14. end
    15. for i=1:size(test,4)
    16. Xtest{i}=test(:,:,1,i);
    17. 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 源码 才意识到。

  • 相关阅读:
    实用篇-Eureka注册中心
    NumPy 数组应用初探
    shell命令以及运行原理
    广州咖啡加盟怎么开,我有一个梦想,开一家自己咖啡店
    零基础看深度学习python代码的基本方法
    FTX的前世今生:崛起、辉煌与崩塌
    Chapter 4 分类
    json-server搭建mock服务
    软件测试报告模板(完整版)
    跨域请求处理之配置代理模式
  • 原文地址:https://blog.csdn.net/jaz/article/details/127117940