No appropriate method, property, or field 'Files' for class 'augmented​ImageDatas​tore'.

4 次查看(过去 30 天)
Hi,
I am trying to apply "Train Deep Learning Network to Classify New Images". I did test exactly according to
But I always got some problem as:
"No appropriate method, property, or field 'Files' for class 'augmentedImageDatastore'.
Error in googlenetJIAGUI (line 88)
valFrequency = floor(numel(augimdsTrain.Files)/miniBatchSize);"
When I ran:
%Train Network
pixelRange = [-30 30];
scaleRange = [0.9 1.1];
imageAugmenter = imageDataAugmenter( ...
'RandXReflection',true, ...
'RandXTranslation',pixelRange, ...
'RandYTranslation',pixelRange, ...
'RandXScale',scaleRange, ...
'RandYScale',scaleRange);
augimdsTrain = augmentedImageDatastore(inputSize(1:2),imdsTrain, ...
'DataAugmentation',imageAugmenter);
augimdsValidation = augmentedImageDatastore(inputSize(1:2),imdsValidation);
%Specify the training options.
miniBatchSize = 10;
valFrequency = floor(numel(imdsValidation.Files)/miniBatchSize); %%valFrequency = floor(numel(augimdsTrain.Files)/miniBatchSize);
options = trainingOptions('sgdm', ...
'MiniBatchSize',miniBatchSize, ...
'MaxEpochs',6, ...
'InitialLearnRate',3e-4, ...
'Shuffle','every-epoch', ...
'ValidationData',augimdsValidation, ...
'ValidationFrequency',valFrequency, ...
'Verbose',false, ...
'Plots','training-progress');
I check inside of "augimdsTrain", there is no "Files". When I replace with the "valFrequency = floor(numel(augimdsTrain.Files)/miniBatchSize);" with "valFrequency = floor(numel(imdsValidation.Files)/miniBatchSize)" . "valFrequency = floor(numel(augimdsTrain.Files)/miniBatchSize);" It seems to work.
Any body could tell me whether I am right?
Best regards,
jiagui
  4 个评论
Ameer Hamza
Ameer Hamza 2020-7-2
On which platform are you running MATLAB R2020a? When I run it, the augmentedImageDatastore does have a field named Files.
>> disp(augimdsTrain)
augmentedImageDatastore with properties:
NumObservations: 55
Files: {55×1 cell}
AlternateFileSystemRoots: {}
MiniBatchSize: 128
DataAugmentation: [1×1 imageDataAugmenter]
ColorPreprocessing: 'none'
OutputSize: [227 227]
OutputSizeMode: 'resize'
DispatchInBackground: 0
Jiagui LI
Jiagui LI 2020-7-2
编辑:Jiagui LI 2020-7-2
Thank you.
I just found that indeed "disp(augimdsTrain)" is showed as you posted in my personal computer (Windows). But somehow it is not working in my office computer (linux). Both are 2020a
You also answered the questions.

请先登录,再进行评论。

采纳的回答

Walter Roberson
Walter Roberson 2020-7-1
Hack way:
old_warning_state = warning('off', 'MATLAB:structOnObject');
temp = struct(augimdsValidation);
warning(old_warning_state);
valFrequency = floor(numel(temp.DatastoreInternal.Files)/miniBatchSize);
  3 个评论
Ameer Hamza
Ameer Hamza 2020-7-2
Jiagui, try the following line
valFrequency = floor(numel(temp.DatastoreInternal.NumObservations)/miniBatchSize);
% or maybe this
valFrequency = floor(numel(temp.Files)/miniBatchSize);
Jiagui LI
Jiagui LI 2020-7-2
Thanks a lot, that is working now as this:
old_warning_state = warning('off', 'MATLAB:structOnObject');
temp = struct(augimdsTrain); %% augimdsTrain , as the website. I should not use augimadsValidation
warning(old_warning_state);
valFrequency = floor(numel(temp.Files)/miniBatchSize);

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Image Data Workflows 的更多信息

产品


版本

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by