首页 > 解决方案 > 训练网络时如何解决“Incorrectly defined MiniBatchable Datastore”错误

问题描述

我正在尝试使用卷积神经网络(使用 MATLAB 的 Deep Network Designer 设计)从图像数据集中识别花朵(对于机器学习来说非常新,没有上过课程,只是在玩弄东西)。我已将图像和标签存储在名为 auimds 的增强数据存储中,但是当我运行 trainNetwork 时,出现以下错误:

使用 trainNetwork 时出错(第 150 行)错误定义的 MiniBatchable 数据存储。C:\Program Files\MATLAB\R2018b\toolbox\matlab\datatypes@table\table.m 第 261 行的读取方法出错:参数数量错误。

培训师错误(第 2 行) net = trainNetwork(auimds,lgraph_1,options);

这是产生错误的代码:

options = trainingOptions('sgdm');
net = trainNetwork(auimds,lgraph_1,options);

这是创建 auimds 的代码的相关部分。“paths”是图像路径列表,“labels”是标签列表,“folders”是包含图像的文件夹名称列表。图像根据其包含文件夹的名称被赋予标签:

counter = 1;
for i=1:length(paths)
    files = dir(fullfile(paths(i),'*.jpg'));
    for j=1:length(files)
        labels(counter) = folders(i).name;
        counter = counter + 1;
    end
end
imds = imageDatastore(paths,'Labels',labels);
auimds = augmentedImageDatastore([200,200],imds);

标签: matlabdeep-learning

解决方案


对于遇到此问题的任何人,我通过将标签设置为分类来解决它。

imds = imageDatastore(paths,'Labels', categorical(labels));

推荐阅读