- digitTest4DArrayData関数は「深層学習用のデータセット」の内「数字データセット」を読み込みます
- (MATLABルート)/toolbox/nnet/nndemos/nndatasets/DigitDataset/ 内の数字画像を読み取っています
- 角度情報(各画像が何度傾いているか)は、別途保存されているcsvファイルから読み込みます
- splitEachLabel関数は使わず、既存の学習用/検証用の画像リストをtableデータとして読み込みます
- ラベル(数字情報)はimageDatastore関数でフォルダ名をラベルとして読み込みます
- (↑csvファイルにもラベルが記録されていますが、何故かそれは使わずimdsから取得しています)
[Dt,A,~] = digitTrain4DArrayData [Dv,B,~] = digitTest4DArrayDataに入れたときにcastでクラス変換をdouble型にしたのにdigitTrain4DArrayDataに入れるとカテゴライズ型になってしまう
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
takmakome
el 2 de Jul. de 2022
Respondida: Atsushi Ueno
el 3 de Jul. de 2022
imds = imageDatastore('機械学習500',"IncludeSubfolders",true,"LabelSource","foldernames");
[xtrain,xval] = splitEachLabel(imds,0.5,"randomized");
xtrainimg = augmentedImageDatastore([28 28 1],xtrain,"ColorPreprocessing","gray2rgb");
xvalimg = augmentedImageDatastore([28 28 1],xval,"ColorPreprocessing","gray2rgb");
whos xval;
whos imds;
T = imshow(readimage(imds,1));
whos T
Dt= zeros(128,128,1,2500);
Dv = zeros(128,128,1,2500);
for i=1:numel(xtrainimg.Files)
I = imread (xtrainimg.Files{i});
Dt(:,:,1,i) = I;
II = imread (xvalimg.Files{i});
Dv(:,:,:,i) = II;
end
whos Dt
data = readall(xtrainimg);
trainfiles = data.input;
trainres = data.response;
A = cast(trainres,"unit8")
whos trainres
%size trainres
whos A
data1 = readall(xvalimg);
valfile = data1.input;
valB = data1.response;
B = cast(valB,"unit8")
%ytraining = categorical(data);
%yval = categorical(data1);
[Dt,A,~] = digitTrain4DArrayData
[Dv,B,~] = digitTest4DArrayData
[Dt,A,~] = digitTrain4DArrayData [Dv,B,~] = digitTest4DArrayData
変数Aに割り建てられた値が使われず反映されていません。Bも同様です。どうやって digitTrain4DArrayData 等に入れたときにA,Bnidouble型で反映させるのかご教示してほしいです。お願いします。
1 comentario
Atsushi Ueno
el 3 de Jul. de 2022
type digitTrain4DArrayData
type digitTableToArray
type digitTrainTable
trainTable = readtable('/MATLAB/toolbox/nnet/nndemos/nndatasets/DigitDataset/digitTrain.csv')
Respuesta aceptada
Atsushi Ueno
el 3 de Jul. de 2022
>変数Aに割り建てられた値が使われず反映されていません。Bも同様です。
コメントに書いた通りdigitTest4DArrayData関数は「数字データセット」を読み込む関数です。DtやAなど「機械学習500」由来のデータが「数字データセット」由来のデータにより上書きされてしまっています。
>どうやって digitTrain4DArrayData 等に入れたときにA,Bnidouble型で反映させるのかご教示してほしいです
⇒単にcategorical型をdouble型に変換するのであれば、質問のプログラムで実行しているのと同様にキャストすれば良いです
% A = cast(trainres,"unit8")
「数字データセット」の"digits"(画像が0-9のどの数字かを示すcategorical型ラベル)をdouble型として得たいのであれば
[images, digits, angles] = digitTrain4DArrayData;
categories(digits)
但し、categorical型は列挙型と同じで、数値に変換すると元の離散カテゴリが持っていた情報が失われてしまいます。数字のラベルは0~9で、MATLABはデフォルトで1ベースなのでこれを数字に変換すると1~10になってしまいます。数値に変換後1を減算すればこれらが一致します。
double(digits) - 1; % categorical型ラベル'0'-'9'を数値0-9に変換
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Convert Image Type en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!