CNNの入力層に対応したcsvデータのデータ処理

1 Ansicht (letzte 30 Tage)
Jo Sasaki
Jo Sasaki am 1 Jun. 2018
Kommentiert: michio am 4 Jun. 2018
csvデータに対し1次元の畳み込みニューラルネットワークを作成する際に、複数のcsvデータを変数に格納しCNNの入力層に対応したデータの次元数を変えたいのですが、
 
wavedata = imageDatastore('C:\Users\MTL\Documents\notebook\matlabpracticecsv\drilldata','IncludeSubfolders',true, 'FileExtensions','.csv')
drilllabel = wavedata.Labels
[drilltrain,drilltest] = splitEachLabel(wavedata,0.8,'randomized');
Train_data = reshape(drilltrain, [1 4800 1 320]);
Test_data = reshape(drilltest, [1 4800 1 80]);
このコードで回すと エラー: reshape 要素数を RESHAPE するために変更してはいけません。 とエラーが出ます。
csvデータをCNNの入力層に対応するデータ処理はどう行えばよいのでしょうか?

Antworten (1)

michio
michio am 1 Jun. 2018
reshape 関数 は数値配列に対して実行する関数ですので、
Train_data = reshape(drilltrain, [1 4800 1 320]);
と imageDatastore に対しては意味を持ちません。関数の挙動は
doc reshape
と実行するかウェブ上のドキュメンテーションページで確認してみてください。
では、どこで reshape が実行できるかといいますと、imageDatastore の ReadFcn プロパティで指定する読み込み関数内で実行するのがよいのではと。
wavedata = imageDatastore('C:\Users\MTL\Documents\notebook\matlabpracticecsv\drilldata','IncludeSubfolders',true, 'FileExtensions','.csv')
wavedata.ReadFcn = @readDatastoreCSV;
と設定します。readDatastoreCSV 関数は下記のような定義で試してください。
function data = readDatastoreCSV(filename)
data = csvread(filename);
data = reshape(data, [1 4800 1 80]);
何はともあれ、例えば csv ファイル単体で試してみるなどデバッグしやすいサイズでまず試してみることをお勧めします。 例:(test.csv) の読み込み
imds = imageDatastore('test.csv','ReadFcn',@csvread,'FileExtensions','.csv');
imds.ReadFcn = @readDatastoreCSV;
data = read(imds);
  4 Kommentare
Jo Sasaki
Jo Sasaki am 4 Jun. 2018
全てのデータをチェックしたところ複数の音データがサンプリング周波数の違うものを含んでいたためエラーが出ていました。 データのサイズを合わせたところ実行に成功しました。 丁寧な対応ありがとうございます。
michio
michio am 4 Jun. 2018
それは良かったです。 面白い結果がでたらぜひまた教えてください。

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Resizing and Reshaping Matrices 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!