错误使用 nnet.cnn.TrainingOptionsADAM 'ValidationData' 的值无效。验证数据必须为具有输入数据和响应的表、数据存储或元胞数组。
时间: 2025-03-03 12:16:00 浏览: 96
### MATLAB 中 `nnet.cnn.TrainingOptionsADAM` 的 `'ValidationData'` 参数设置
当在 MATLAB 使用卷积神经网络 (CNN) 进行训练时,如果遇到 `'ValidationData'` 参数值无效的问题,通常是因为输入的数据格式不符合预期。为了确保验证数据的有效性,需遵循特定的结构。
#### 验证数据的要求
对于图像分类任务,`'ValidationData'` 应该是一个包含两个元素的元胞数组 {Xval,Yval} 或者表格 Tbl:
- Xval 是一个四维数值数组,其大小为 [height,width,channels,numImages]。
- Yval 可以是类别标签向量、分类矩阵或 categorical 数组[^1]。
```matlab
% 定义训练选项并指定验证数据
opts = trainingOptions('adam', ...
'MaxEpochs', 8, ...
'MiniBatchSize', 32, ...
'Plots', 'training-progress',...
'Verbose', false,...
'Shuffle','every-epoch',...
'ValidationData',{imdsVal.XTrain, imdsVal.YTrain},...
'ValidationFrequency', 30,...
'ValidationPatience', Inf);
```
#### 数据预处理
确保用于训练和验证的数据集已经过适当预处理,并且具有相同的尺寸和通道数。这可以通过使用 `augmentedImageDatastore` 来实现标准化操作,从而保证所有图片都调整到相同规格。
```matlab
% 创建增强型图像数据存储器实例化对象
imageAugmenter = imageDataAugmenter( ...
'RandRotation', [-90,90], ... % 图像随机旋转角度范围
'FillValue', mean(imds.ReadFcn([])));
% 构建带有增广功能的数据读取器
augImdsTrain = augmentedImageDatastore([inputHeight inputWidth numChannels], imdsTrain.Files,'DataAugmentation', imageAugmenter);
% 对于验证集不需要做过多变换,只需保持一致即可
augImdsVal = augmentedImageDatastore([inputHeight inputWidth numChannels], imdsVal.Files);
```
通过上述方法可以有效解决 `'ValidationData'` 参数值无效的情况,同时确保模型能够正常接收正确的输入与响应格式。
阅读全文
相关推荐

















