深層学習で大規模なCSVデータの取り扱い
3 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 Yoshino
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
Hiro Yoshino
on 18 Feb 2022
失礼しました。
もしですが、ディープラーニングを実行すること自体が目的でなければ、他のアルゴリズムを試されてはと思います。ディープラーニングは画像処理関連のアプリケーションに用いられる側面が強いです。理由としては、画像から特徴量を抽出するために通常はたくさんのフィルターを様々な設定で適用していくのですが、ディープラーニングに頼めば、フィルターと設定を一緒に最適化してくれるからです。なので、テーブルデータのように特徴量がある程度抽出されている状況で、ディープラーニングを使うのは、スーパーマーケットに行くのに F1 カーに乗る状況かも知れません。
こちらに、tall 配列対応 の関数があります。機械学習アルゴリズムが幾つかあるので、そちらでお試しいただけると良いかなと思います。この関数を使えば、モデルを学習するまでに gather をする必要が無いので、計算負荷は最小化されて、ビッグデータでのモデル作成も現実的になると思います。
More Answers (0)
See Also
Categories
Find more on イメージを使用した深層学習 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!