变异神经网络没有按预期进行

时间:2016-08-27 16:18:08

标签: lua neural-network

我正在研究Lua的神经进化系统。在创建一代网络时,我多次改变父网络以创建各种新的子网络。代码如下:

    function MutateNetwork(net)

        for i=2,#net.neurons do
            for j=1,#net.neurons[i] do
                --Mutate Bias
                if (math.random()) > 0.30 then
                    mut = (math.random() - 0.5) * 2
                    net.neurons[i][j].bias = net.neurons[i][j].bias + mut
                end

                --Mutate Weight
                for o=1,#net.neurons[i][j].connections do
                    if (math.random()) > 0.30 then
                        mut = (math.random() - 0.5) * 2
                        net.neurons[i][j].connections[o].weight = net.neurons[i][j].connections[o].weight + mut
                    end
                end
            end
        end

        return net

    end

    function CreateGeneration(parent)
        local gen = {}

        for i=1,childCount do
            gen[i] = MutateNetwork(parent)
        end

        return gen
    end

执行CreateGeneration()函数后,我按预期获得了一系列新网络,但所有突变完全相同。我做错了什么?

1 个答案:

答案 0 :(得分:2)

您正在为所有孩子使用相同的网络。实际上,它与父母是同一个网络。也许你应该做点像

gen[i] = MutateNetwork(DuplicateNetwork(parent))

新功能DuplicateNetwork制作网络的深层副本。