问题描述
我刚开始学习 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 (将#修改为@)