2017-11-27 3 views
0

Ich versuche, CNN auf meinem Bilddatensatz zu implementieren. Meine Datenmenge enthält 1100 Einträge, die eine Antwortvariable darstellen. Jeder Eintrag enthält 81 Bilder. Hier ist dies, wie ich es umgesetzt:DS muss ein ImageDataset sein

clear all 
close all 
clc 

cd('E:\Project\Selected81\') 
tbl = {'E:\Project\Selected81\00edff4f51a893d80dae2d42a7f45ad1', 1; 
     'E:\Project\Selected81\0a0c32c9e08cc2ea76a71649de56be6d', 1; 
     'E:\Project\Selected81\0de72529c30fe642bc60dcb75c87f6bd', 0; 
     'E:\Project\Selected81\1acbe17dc8f9f59d2fd167b2aa6c650f', 1}; 
options = trainingOptions('sgdm','InitialLearnRate',0.001,'MaxEpochs',15); 
trainedNet = trainNetwork(tbl,5,options) 

wo 1, 1, 0, 1 sind die Etiketten sind.

Aber es gibt den folgenden Fehler:

ds must be an imagedataset`.

Ich verstehe nicht, als die Wege sind Ich gebe zu dem Bilddatensatz.

Aktualisiert Code:

myfolder = 'E:\Project\Selected81\00edff4f51a893d80dae2d42a7f45ad1' 
myfolder1='E:\Project\Selected81\0a0c32c9e08cc2ea76a71649de56be6d' 
myfolder2='E:\Project\Selected81\0de72529c30fe642bc60dcb75c87f6bd' 
myfolder3='E:\Project\Selected81\1acbe17dc8f9f59d2fd167b2aa6c650f' 
cd('E:\Project\Selected81\') 
tbl = { datastore(myfolder, 'Type', 'image'), 1; 
     datastore(myfolder1, 'Type', 'image'), 1; 
     datastore(myfolder2, 'Type', 'image'), 0; 
     datastore(myfolder3, 'Type', 'image'), 1}; 

options = trainingOptions('sgdm','InitialLearnRate',0.001,'MaxEpochs',15); 
trainedNet = trainNetwork(tbl,81,options) 

Ich bin mit MATLAB R2016b.

+0

Das sollte Bild Dateiname auch enthalten. Siehe [*** doc ***] (https://www.mathworks.com/help/nnet/ref/trainnetwork.html) –

+0

@SardarUsama Ich kann nicht jeden Bildpfad angeben. Ich habe 'Datenspeicher' verwendet. Bitte werfen Sie einen Blick und lassen Sie es mich wissen. –

+0

Haben Sie den Dokumentationslink gelesen, den ich im vorherigen Kommentar zitiert habe? –

Antwort

0

Da die Fehlermeldung sagt, „ds muss ein imagedataset sein“, was Sie haben, ist der Pfad zum Bildverzeichnis ohne die Namen der Bilder.

Sie müssen datastore oder imageDatastore verwenden.

% Using myfolder, myfolder1, myfolder3 in one go since they have the same label 
tbl = datastore({myfolder,myfolder1,myfolder3}, 'Type', 'image'); 
tbl2 = datastore(myfolder2, 'Type', 'image'); 
tbl.Files = {tbl.Files{:} tbl2.Files{:}}.'; %Combining the files 
%     Label is 1 ↓     Label is 0 ↓  
Labels = categorical([repmat(1,1,length(tbl.Files)), repmat(0,1,length(tbl2.Files))]) ; 
% Above line is for the general case. If you have 1 and 0 as labels, better use: 
% [ones(1,length(tbl.Files))] and [zeros(1,length(tbl2.Files))] respectively 
tbl.Labels = Labels; %Combining the labels 
clear tbl2;   %Clearing tbl2 since it is not needed anymore 
Verwandte Themen