深層学習で大規模なCSVデータの取り扱い

8 views (last 30 days)
翔太 石田
翔太 石田 on 17 Feb 2022
Commented: 翔太 石田 on 18 Feb 2022
数値シミュレーションデータ(n行9列,約90GB)を複数のCSVに分割して保存し,特徴入力層を使用して深層ニューラルネットワークへの学習を試みています.
tabularTextDatastoreを使用してCSVデータの読み込む
データストアをtall配列に変換し,cvpartitionを利用して学習用データとテスト用データに分割
この学習データを利用してネットワークに学習(trainNetwork)
layers = [
featureInputLayer(numFeatures)
...(略)
regressionLayer];
このとき,「無効な学習データです。予測子は数値配列、データストアまたは table でなければなりません。シーケンス入力をもつネットワークでは、予測子をシーケンスの cell 配列にすることもできます。」とエラーが表示されました.
一部のデータを抜き出し,tall配列をやめたら動作したため,trainNetworkにtall配列のデータを渡していることが原因と思います.
しかし,全シミュレーションデータはメモリで抱えきれないため,大量のシミュレーションデータに対して学習が実行できません.
大規模のCSVデータを使用してtrainNetworkを動作させるにはどうすればよいでしょうか.

Accepted Answer

Hiro
Hiro on 17 Feb 2022
tall 変換せずに、datastore のまま分割すると良いです。datastore はレポジトリなので、メモリにデータをロードすることなくデータの管理ができます。分割する関数はこちら:
https://www.mathworks.com/help/matlab/ref/matlab.io.datastore.imagedatastore.partition.html
trainNetwork 関数のオプションに validation data の設定が有ると思うので、そこに validation 用に取っておいたデータ適用すると良いかと思います。
datastore を全て読み込まずに、preview 等でデータを確認しながら少しずつモデルを作製されると良いかと思います。
上手く行ってから、大きなデータ全体に対して学習を試みることがお薦めです。
  3 Comments
翔太 石田
翔太 石田 on 18 Feb 2022
度々ありがとうございます.疑問が解決しました.
他のアルゴリズムの利用も含め検討いたします.
とても有益な情報ありがとうございました.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!