シンプルだが大きなデータファイルがあります。これは、ニューラル ネットワーク シミュレーションからの出力です。最初の列は時間ステップ、1..200 です。2 番目はターゲット ワードです (現在のシミュレーションでは 1..212)。次に、単語ごとに 1 つずつ、合計 212 の列があります。つまり、各行には、特定のターゲット (入力) 単語が与えられた特定の時間ステップでの各単語ノードの活性化値があります。
各活性化を応答強度 (exp(定数 x 活性化)) に変換し、各応答強度を応答強度の行の合計で割るなど、簡単な操作を行う必要があります。R でこれを行うのは非常に遅く (20 分)、perl で従来のループ処理を行うと高速ですが、後のシミュレーションで数千ワードが必要になるため、それでも時間がかかります (7 分)。
PDL はこれをはるかに迅速に実行できるように思われます。PDL のドキュメントを読んでいますが、2 番目の手順を実行する方法がわかりません。最初のものは、アクティベーション列だけを選択して $act に入れるのと同じくらい簡単に思えます。
$rp = exp($act * $k);
しかし、各値を行の合計で割る方法がわかりません。アドバイスをいただければ幸いです。
ありがとう!