MATLAB Answers

0

csvの一次元データ​に対する畳込みニュー​ラルネットワークの入​力データのばらつきに​ついて

Jo Sasaki さんによって質問されました 2018 年 12 月 10 日
最新アクティビティ Jo Sasaki さんによって コメントされました 2018 年 12 月 20 日
音データのcsvデータに対し畳み込みニューラルネットワークを行っています。
CNNレイヤーに対応したデータストアはimageDatastoreしかないので、下記の読み込み関数を定義して読み込みを行っています。
function data = readDatastoreCSV(filename)
data = csvread(filename);
data = reshape(data, [1 1200 1 1]);
この場合読み込み関数で読み込むデータは1200データとしなければなりませんが、今手元にある入力データは1100や1400などばらつきがある状態です。
ですので、csvデータに対し0パディングのようにデータの水増しを行いたいと思っています。
例えば、1200データが存在するcsvに対し300データ「0」を末尾に加えて、この作業をすべてのデータ数を1500として扱おうと考えています。
こういったcsvデータの水増しはMATLABで可能でしょうか?
もしくは、MATLABのcnnの関数内でデータの数を合わせてくれる機能などが存在しているのでしょうか?
読み込み関数内で行ってもいいですし、csvデータのみ編集でもよいのでご教授いただければ幸いです。

  0 件のコメント

サインイン to comment.

1 件の回答

Kazuya
回答者: Kazuya
2018 年 12 月 11 日
編集済み: Kazuya
2018 年 12 月 11 日
 採用された回答

データ型など注意する必要があるかもしれませんが、
function data = readDatastoreCSV(filename)
tmp = csvread(filename); % データ読み込み(N < 1500が前提)
N = length(tmp); % 読み取ったデータ要素数確認
data = zeros(1500,1); % 全て 0 のベクトル定義
data(1:N,1) = tmp; % filename のデータをコピー
data = reshape(data, [1 1500 1 1]);
とすれば、とりあえず結果出てくる data は 1500要素で揃います。

  5 件のコメント

Jo Sasaki 2018 年 12 月 18 日
まず大本のcsvreadのところで読み込めないエラーが起きているみたいです。
csvの分割は他のツールで自動的に行っているのですが、分割前のcsvは読み取れるのですが、分割後のcsvで読み込めないようです。
dlmreadのスクリプトを見たところASCIIで書き出されたcsvを読み込むことができるみたいなので、ちゃんとASCIIで書き出したはずなのですが読み取れないみたいです。
分割ツールとmatlabの相性があまりよくないみたいですね。
Kazuya
2018 年 12 月 18 日
分割後の csv はどれも csvread 関数単体で実行しても読み取れないということですか?先日の書き込みからはすべてが読み取れないわけではなさそうでしたが。
  • 読み取れる csv ファイルと読み取れない csv ファイルの特定
  • 同じ csv ファイルでも読み取れる時と読み取れない時があるのかどうか
の2点を確認せずに、いろいろ試しても解決(原因の理解)にはつながらないですよー。うっかり動くこともあるとは思いますが。
Jo Sasaki 2018 年 12 月 20 日
読み取れるCSVは私がマクロで分割したもということに先日気づきました。
結局しっかりとした根拠は見つからなかったのですがフリーの分割ツールで分割することはNGだという結論に至りました。
なので、MATLABでcsv分割のコードを作成し分割し学習を行うことに成功しました。
ご丁寧な対応ありがとうございました。

サインイン to comment.