当 `self` 从 `torch.class` 方法返回到控制台时,为什么 Lua/Torch 运行 内存不足?

Why does Lua/Torch run out of memory when an `self` is returned to console from a `torch.class` method?

我已经将 torch-dataframe to return self instead of void in order to achieve simple method chaining 修改为 torch.class。不幸的是,这似乎造成了内存问题的严重破坏:

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 chaining patterns for a torch.class.

的示例

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