No appropriate method, property, or field 'Files' for class 'augmentedImageDatastore'.
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Jiagui LI
am 30 Jun. 2020
Bearbeitet: Jiagui LI
am 2 Jul. 2020
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 Kommentare
Ameer Hamza
am 2 Jul. 2020
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
Akzeptierte Antwort
Walter Roberson
am 1 Jul. 2020
Hack way:
old_warning_state = warning('off', 'MATLAB:structOnObject');
temp = struct(augimdsValidation);
warning(old_warning_state);
valFrequency = floor(numel(temp.DatastoreInternal.Files)/miniBatchSize);
3 Kommentare
Ameer Hamza
am 2 Jul. 2020
Jiagui, try the following line
valFrequency = floor(numel(temp.DatastoreInternal.NumObservations)/miniBatchSize);
% or maybe this
valFrequency = floor(numel(temp.Files)/miniBatchSize);
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Image Data Workflows finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!