StanfordNLP's TreeLSTM, khi được sử dụng với tập dữ liệu có> 30 nghìn trường hợp, khiến LuaJit gặp lỗi với "Không đủ bộ nhớ". Tôi đang giải quyết vấn đề này bằng cách sử dụng LuaJit Data Structures. Để có được tập dữ liệu bên ngoài heap của lua, cây cần được đặt trong LDS.Vector.Đây có phải là cách thiết thực để giải quyết 'Không đủ bộ nhớ' từ LuaJit với Torch
Kể từ khi LDS.Vector giữ cdata, bước đầu tiên là làm cho các loại cây vào một đối tượng cdata:
local ffi = require('ffi')
ffi.cdef([[
typedef struct CTree {
struct CTree* parent;
int num_children;
struct CTree* children [25];
int idx;
int gold_label;
int leaf_idx;
} CTree;
]])
Ngoài ra còn có những thay đổi nhỏ mà cần phải được thực hiện trong read_data.lua để xử lý loại CData mới. Sử dụng LDS dường như là một cách tiếp cận hợp lý để giải quyết giới hạn bộ nhớ cho đến nay; tuy nhiên, CTree yêu cầu một trường có tên 'nhà soạn nhạc'.
Nhà soạn nhạc thuộc loại nn.gModule. Để tiếp tục với giải pháp này sẽ liên quan đến việc tạo một typedef của nn.gModule dưới dạng cdata, bao gồm việc tạo một typedef cho các thành viên của nó. Trước khi tiếp tục, điều này có vẻ như hướng đi đúng không? Có ai có kinh nghiệm với vấn đề này?