エラー:reshapeはなぜ発生するのですか?

imds = imageDatastore('機械学習用',"IncludeSubfolders",true,"LabelSource","foldernames");
whos imds
T = imshow(readimage(imds,1))
whos T
D = zeros(128,128,1,41011);
for i = 1:numel(imds.Files)
II = imread (imds.Files{i});
I = reshape(II,128,128);
D(:,:,:,i) = I;
end
なぜこのエラーが出るのかが初心者でわからないので改善できるアイデアをご教授してくださると助かります。
写真は128×128 IIが10×12でサイズを合わせるためにresizeで128×128にしたらこのようなエラーが出てしまいました。 わかりにくいと思いますがお願いします。

 采纳的回答

Atsushi Ueno
Atsushi Ueno 2022-6-26

0 个投票

>なぜこのエラーが出るのか (中略) IIが10×12でサイズを合わせるためにresizeで128×128に
エラーメッセージの通り、reshape関数で入力データの要素数を変更してはなりません。10*12=120画素を128*128=16384画素に変更しようとしていますがそれは出来ません。今の目的に適する関数はimresize関数です。
imds = imageDatastore('機械学習用',"IncludeSubfolders",true,"LabelSource","foldernames");
whos imds
T = imshow(readimage(imds,1))
whos T
D = zeros(128,128,1,41011);
for i = 1:numel(imds.Files)
II = imread (imds.Files{i});
I = imresize(II,[128,128]); % reshape(II,128,128);
D(:,:,:,i) = I;
end

1 个评论

takmakome
takmakome 2022-6-26
2つも解決方法を提案してくださりありがとうございます。
めちゃめちゃ勉強になります。

请先登录,再进行评论。

更多回答(1 个)

Atsushi Ueno
Atsushi Ueno 2022-6-26

0 个投票

% Deep Learning に入力するため画像をリサイズする場合、画像ファイルそのものには手を加えることなく、
% プログラム側で imageDatastore + augmentedImageDatastore を組み合わせて使うことで、
% Deep Learning への画像入力サイズを調整することができます。
imds = imageDatastore('機械学習用',"IncludeSubfolders",true,"LabelSource","foldernames");
augimds = augmentedImageDatastore([128 128 1],imds);
Deep Learning に入力するため画像をリサイズするのであれば、上記のimdsではなくaugimdsを用いれば、画像をリサイズしなくても自動的に変換する仕組み(ミニバッチ)を動かしてくれます。

类别

帮助中心File Exchange 中查找有关 Statistics and Machine Learning Toolbox 入門 的更多信息

产品

版本

R2022a

Community Treasure Hunt

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

Start Hunting!