如何在图层表中存储图层信息

问题描述

我刚开始学习 Lua (5.4),我想 OOP 一个神经网络(我以前用 Python 做过)。然而,当我测试我的图层“类”时,我得到了一些奇怪的结果。我的表格对于表格中的每个“行”都有相同的内容。 我的代码如下:

math.randomseed(os.time())
  

-- Creates random value between lower and upper bounds
-- the function Could be better,but it works good enough for this
local function randbetween(lower_limit,upper_limit)
    local treshold = 0.5
    local value = math.random()
    if value < treshold then return math.random() * lower_limit
    elseif value >= treshold then return math.random() * upper_limit end
end

-- A single Neuron within a neural network
local Neuron = {}

function Neuron:init(numberOfInputs)
    self.numberOfInputs = numberOfInputs
    self.weights = {}
    for i = 1,numberOfInputs,1 do self.weights[i] = randbetween(-1,1) end
    self.bias = randbetween(-1,1)
    return self
end

-- A single layer within the neural network
local Layer = {}

function Layer:init(numberOfNeurons,numberOfInputsPerNeuron)
    self.numberOfNeurons = numberOfNeurons
    self.neurons = {}
    for i = 1,numberOfInputsPerNeuron,1 do
        self.neurons[i] = Neuron:init(numberOfInputsPerNeuron)
    end
    return self
end

local L = {}

L[1] = Layer:init(2,0)
L[2] = Layer:init(3,2)
for k,v in pairs(L) do print(k,v) end

这是我的输出

1   table: 000002AB12D5D7D0
2   table: 000002AB12D5D7D0

L[1] 应该有 numberOfNeurons = 2,所以我期待这样的东西:

init    function: 000001E022968760
neurons table: 000001E02297D6E0
numberOfNeurons 2

但是,它返回:

init    function: 000001E022968760
neurons table: 000001E02297D6E0
numberOfNeurons 3

与 L[2] 相同。

这让我相信所有表格行都被最后一个条目覆盖。

有什么办法可以解决这个问题,还是我做错了什么?我怀疑这是因为我不使用元表,但我不知道这是不是问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)