深層学習で大規模なCSVデータの取り扱い
8 views (last 30 days)
Show older comments
数値シミュレーションデータ(n行9列,約90GB)を複数のCSVに分割して保存し,特徴入力層を使用して深層ニューラルネットワークへの学習を試みています.
tabularTextDatastoreを使用してCSVデータの読み込む
↓
データストアをtall配列に変換し,cvpartitionを利用して学習用データとテスト用データに分割
↓
この学習データを利用してネットワークに学習(trainNetwork)
layers = [
featureInputLayer(numFeatures)
...(略)
regressionLayer];
このとき,「無効な学習データです。予測子は数値配列、データストアまたは table でなければなりません。シーケンス入力をもつネットワークでは、予測子をシーケンスの cell 配列にすることもできます。」とエラーが表示されました.
一部のデータを抜き出し,tall配列をやめたら動作したため,trainNetworkにtall配列のデータを渡していることが原因と思います.
しかし,全シミュレーションデータはメモリで抱えきれないため,大量のシミュレーションデータに対して学習が実行できません.
大規模のCSVデータを使用してtrainNetworkを動作させるにはどうすればよいでしょうか.
0 Comments
Accepted Answer
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 等でデータを確認しながら少しずつモデルを作製されると良いかと思います。
上手く行ってから、大きなデータ全体に対して学習を試みることがお薦めです。
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!