MATLAB 图像分类中 'trainNetwork' 错误:无效的训练数据

如果您在 MATLAB 中使用 trainNetwork 函数进行图像分类时遇到 '无效的训练数据' 错误,这通常是因为您的目标数据 (true_labels) 格式不正确。

错误原因:

trainNetwork 函数需要目标数据为分类响应。分类响应是指每个标签都对应于相应图像所属类别的变量。

常见的错误原因是目标数据格式为:

  • 连续值: 例如,表示图像亮度的数值。* 非数值数据: 例如,表示类别的字符串。

解决方法:

要解决此错误,您需要将目标数据 true_labels 转换为分类响应。以下是一些常用的方法:

  1. 独热编码 (One-Hot Encoding): 将每个类别转换为一个二进制向量,其中只有一个元素为 1,其余元素为 0。例如,如果有三个类别,则可以将它们编码为:[1 0 0], [0 1 0], [0 0 1]。2. 映射到整数类别: 将每个类别映射到一个唯一的整数。例如,将类别 '猫'、'狗'、'鸟' 分别映射到 1、2、3。

**代码示例:**matlab% 假设 true_labels 是一个包含类别名称的字符串数组true_labels = {'猫', '狗', '猫', '鸟', '狗'};

% 使用 categorical 函数将字符串类别转换为分类数组true_labels = categorical(true_labels);

% 或者,将类别映射到整数class_names = unique(true_labels);for i = 1:length(class_names) true_labels(strcmp(true_labels, class_names{i})) = {i};endtrue_labels = cell2mat(true_labels);

% 现在 true_labels 是一个有效的分类响应,可以用于 trainNetwork 函数

检查目标数据:

在进行转换后,请仔细检查 true_labels 的格式和内容,确保其符合图像分类任务的要求。

通过将目标数据转换为有效的分类响应,您应该能够解决 'trainNetwork' 函数中的 '无效的训练数据' 错误,并成功训练您的图像分类模型。

trainNetwork 错误:无效的训练数据 - MATLAB 图像分类

原文地址: https://www.cveoy.top/t/topic/MMd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录