我有一个简单但很大的数据文件。它是神经网络模拟的输出。第一列是时间步长,1..200。第二个是目标词(对于当前的模拟,1..212)。然后有 212 列,每个单词一个。也就是说,在给定特定目标(输入)词的情况下,每一行都有每个词节点在特定时间步的激活值。
我需要做一些简单的操作,例如将每个激活转换为响应强度(exp(constant x activation)),然后将每个响应强度除以响应强度的行总和。在 R 中执行此操作非常慢(20 分钟),而在 perl 中使用传统循环执行此操作更快但仍然很慢(7 分钟),因为稍后的模拟将涉及数千个单词。
看起来 PDL 应该能够更快地做到这一点。我一直在阅读 PDL 文档,但我真的不知道如何进行第二步。第一个似乎就像只选择激活列并将它们放入 $act 一样简单,然后:
$rp = exp($act * $k);
但我不知道如何将每个值除以其行总和。任何意见,将不胜感激。
谢谢!