如何解决如何在图层表中存储图层信息
我刚开始学习 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 举报,一经查实,本站将立刻删除。