在数据表之间复制许多大型公式(神经网络)非常非常慢我有用于神经网络建模的10000行x 100+列的数据集。我制作了75个不同的模型,其中包含20个节点x 100个输入/节点,并使用快速公式保存了公式。我有10个不同的表(相同的数据集,不同的模型),每个表有75个模型,并且我想将所有模型(公式)合并到一个主表中,因为我想将所有模型应用于我收集的任何新数据。
我尝试的每种方法都将永远永久。我已经使用了“复制公式”加载项将每个表的公式复制到一个表中,总共花费大约2天时间才能完成所有表合并,并且没有进度的迹象,很难知道它是否仍在工作或冻结的。
我通过将行与隐含公式求值匹配来使用Join,以便将它们全部合并到一个表中,这很快。但是,当我通过手动选择公式列并使用“列”>“标准化属性”>“列属性”>“公式”>“抑制评估”来重新打开公式求值时,重新计算750个公式会花费很多时间。它已经运行了30个小时(处理器利用率最高达到12%),我不知道进度如何。
我尝试一次遍历各列以打开公式求值,但是即使对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;
回复:在数据表之间复制许多大型公式(神经网络)非常非常慢嗨,伊恩,
感谢您的快速回复。我只是通过使用所有公式从列添加公式来尝试了公式仓库方法,脚本创建很快。当我在删除了“公式列”的重复表上测试运行脚本(运行6个脚本)时,运行速度非常快。到目前为止,一切都很好。然后,当我尝试在同一张表上运行所有脚本时,启动速度很快,但随着创建更多列而逐渐变慢(我可以在“列”窗格中看到正在创建的列)。最终似乎冻结了(5分钟内未创建新列)。嗯 现在,我将尝试分批进行操作,以查看是否有帮助。
回复:在数据表之间复制许多大型公式(神经网络)非常非常慢我想知道是否同时重新计算了这些公式,并且正在争夺处理器时间。
回复:在数据表之间复制许多大型公式(神经网络)非常非常慢我尝试一次从“公式库”对100个公式进行运行脚本。前100个跑得相当快。第二个100慢下来,似乎停了下来。
我尝试从Formula Depot复制所有公式的脚本,并包装在<< Begin Data Update ... <<结束数据更新。
我尝试在用Suppress Eval(1)复制的公式列上运行Suppress Eval(0)。我遍历了包裹在<< Begin Data Update .... Col(i)中的列,禁止Eval(0)...... Wait(0)<< End Data Update。我尝试了10列。没用
到目前为止,我没有尝试过比在公式评估已启用的情况下手动逐行连接表要快得多的方法了,这花了几天的时间.....
PS有没有办法破坏正在运行的脚本?