データテーブル間で多数の大きな数式(ニューラルネット)をコピーすると、非常に時間がかかりますニューラルネットワークモデリングに使用される10000行x 100列以上のデータセットがあります。20ノードx 100入力/ノードの75の異なるモデルを作成し、高速の数式を使用して数式を保存しました。私は10の異なるテーブル(同じデータセット、異なるモデリング)を持ち、それぞれに75モデルがあり、すべてのモデル(数式)を1つのマスターテーブルにマージします。これは、すべてのモデルを収集する新しいデータに適用するためです。
私が試みるすべての方法は永遠にかかります。数式コピーアドインを使用して各テーブルの数式を1つのテーブルにコピーしました。すべてのテーブルのマージが完了するまでに合計で約2日かかり、進行状況を示すことなく、まだ機能しているかどうかはわかりません。フローズン。
私は、すべての行を1つのテーブルにまとめるために、式の抑制評価で行を照合して結合を使用しましたが、これは高速です。ただし、数式列を手動で選択し、[列]> [属性の標準化]> [列のプロパティ]> [数式]> [評価の抑制]を使用して数式の評価をオンに戻すと、750の数式の再計算に時間がかかります。これは30時間実行され(最大でプロセッサ使用率12%に達します)、進捗状況がわかりません。
列を1つずつループして数式の評価をオンにしようとしましたが、これを1列で実行しても5分以上かかりました。これは信じられないほど長いようです。
これをスピードアップする方法はありますか?私は回避策があることを知っていますが、これはこれよりもはるかに簡単で速いはずです。
再:データテーブル間で多くの大きな数式(ニューラルネット)をコピーすると、非常に時間がかかります「より大きな」問題では、詳細の一部またはすべてを知らずに効率に関する一般的なアドバイスを提供することは困難です。まだ行っていない場合は、「Begin Data Update()」および「End Data Update()」テーブルメッセージの影響、および/または数式の評価方法の制御(またはそうでない)を確認できます。FWIW、私の本能は、あなたがフォーミュラデポ仲介者として。私はこれをチェックするためのコードを書き始めましたが、このサイズの問題の場合、モデリング自体に時間がかかるため、このパスを続行しませんでした。
NamesDefaultToHere(1);
// Define the data volume
nr = 100;
nc = 10;
// Make some random data
dt = AsTable(J(nr, nc, RandomNormal(0, 1)));
dt << setName("Random Data");
// Fit neural and publish prediction formula
cols = dt << getColumnNames("String");
yCol = cols[NItems(cols)];
RemoveFrom(cols, NItems(cols));
nn = dt << Neural(Y(Eval(yCol)), X(Eval(cols)), Fit( NTanH( 3 ) ), Invisible);
nn(Fit(1)) << publishPredictionFormula;
Report(nn) << closeWindow;
再:データテーブル間で多くの大きな数式(ニューラルネット)をコピーすると、非常に時間がかかりますこんにちはイアン、
迅速な対応ありがとうございます。すべての数式を使用して列から数式を追加することでFormula Depotメソッドを試したところ、スクリプトの作成が高速でした。数式列を削除した複製テーブルでスクリプトの実行(6つのスクリプトを実行)をテストしたところ、非常に高速でした。ここまでは順調ですね。その後、同じテーブルですべてのスクリプトを実行しようとすると、スクリプトは速く起動しましたが、列が作成されるにつれて徐々に遅くなりました([列]ペインで列が作成されているのがわかりました)。最終的にフリーズしたように見えました(5分間で新しい列は作成されませんでした)。うーん。それが役立つかどうかを確認するために、これを小さなバッチで実行してみます。
再:データテーブル間で多くの大きな数式(ニューラルネット)をコピーすると、非常に時間がかかります数式がすべて同時に再計算され、プロセッサ時間を奪い合っているのでしょうか。
再:データテーブル間で多くの大きな数式(ニューラルネット)をコピーすると、非常に時間がかかります一度に100の数式で数式デポからスクリプトを実行してみました。最初の100はかなり高速でした。2番目の100はクロールに減速し、停止したように見えました。
<< Depot Data Update ...でラップして、Formula Depotからすべての数式のスクリプトをコピーしてみました... <<データ更新を終了します。
抑制評価(1)でコピーされた数式の列で抑制評価(0)を実行してみました。<< Begin Data Update .... Col(i)Suppress Eval(0)...... Wait(0)<< End Data Updateでラップされた列をループしました。10列で試してみました。うまくいきませんでした。
これまでのところ、数式の評価をオンにして手動で行ごとにテーブルを結合するよりも速く作業したことはなく、何日もかかりました。
PS実行中のスクリプトを中断する方法はありますか?