为什么Lua/Torch在从`torch.class`方法返回`self`到控制台时会耗尽内存?

我已经修改了torch-dataframe,以便在torch.class中实现简单的方法链接时返回self而不是void。不幸的是,这似乎会引起内存问题:

th> require 'Dataframe'; df = torch.load('dataset_4_torch.t7')
                                                                      [4.8434s]
th> b = df:create_subsets() -- Works
                                                                      [0.7384s]
th> df:create_subsets() -- Fails even if called before the b = df:create_...
/home/max/tools/torch/install/bin/luajit: not enough memory

我尝试覆盖调用所有返回对象的默认打印函数,但这并没有帮助。

内存细节

这里是一些内存分析:

th> collectgarbage("count")
1836.24609375
                                                                      [0.0002s]
th> require 'Dataframe'; df = torch.load('dataset_4_torch.t7')
                                                                      [4.6875s]
th> collectgarbage("count")
59659.619140625
                                                                      [0.0003s]
th> b = df:create_subsets()
                                                                      [0.7571s]
th> collectgarbage("count")
62303.567382812
                                                                      [0.0001s]
th> df:create_subsets()
/home/max/tools/torch/install/bin/luajit: not enough memory

如果这个问题太难,那么我会感激一个torch.class方法链接模式的正确应用实例。

点赞
用户409508
用户409508

感谢你的帮助。事实证明,我加了一条断言,并在错误消息中添加了整个列的 tostring。这在我们的测试环境中可以工作,但在真实数据集中生成了大量字符串,因此出现了内存问题。

2016-06-11 19:06:47