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

时间:2016-06-10 08:37:16

标签: memory lua torch method-chaining luajit

我已将torch-dataframe修改为返回self而非void,以便为torch.class实现简单的method chaining。不幸的是,这似乎对内存问题造成了严重破坏:

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

如果这个问题很难,那么我将非常感谢如何正确应用method chainingtorch.class模式。

1 个答案:

答案 0 :(得分:0)

感谢您帮助我。事实证明,我输入了一个断言,并在错误消息中,我在某个时刻添加了整个列的tostring。这在我们的测试环境中起作用,但是在真实的数据集中,生成了大量的字符串,因此产生了内存问题。