Lua表格的插入和获取相同元素的操作。

这是我的代码:

30   for t = 1,testData:size() do
33       -- 获取新的样本
34       local input = testData.data[t]
35       if opt.type == 'double' then input = input:double()
36       elseif opt.type == 'cuda' then input = input:cuda() end
37       local target = testData.labels[t]
38       -- 测试样本
39       local pred = model:forward(input)
40       test_result[t]=pred
41       
42       local err = criterion:forward(pred,target)
43       te_error = te_error+err
44   end
45   print(test_result[1])
46   print(test_result[2])

然后我得到了相同的元素,这是因为我的表只存储了最后一个元素,为什么?

点赞
用户869951
用户869951

我打赌 model:forward(input) 返回的是一个全局表。因此,所有的 testResult 都会指向同一个全局表。你可以通过在接收到 pred 后打印它来验证这一点: 如果是一个全局表,它的“值”(指针)永远都是相同的。请验证 model:forward 返回的是该函数内的一个局部表。

2014-07-11 21:12:04