相关疑难解决方法(0)

简单神经网络无法学习异或

我正在尝试学习神经网络并编写一个简单的反向传播神经网络,该网络使用S形激活函数,随机权重初始化和学习/梯度动量.

当配置2个输入,2个隐藏节点和1时,它无法学习XOR和AND.但是,它会正确学习OR.

我没有看到我做错了什么,所以任何帮助都将不胜感激.

谢谢

编辑:如上所述,我测试了2个隐藏节点,但下面的代码显示了3的配置.我只是忘了在使用3个隐藏节点运行测试后将其更改回2.

network.rb:

module Neural

class Network

    attr_accessor :num_inputs, :num_hidden_nodes, :num_output_nodes, :input_weights, :hidden_weights, :hidden_nodes, 
                    :output_nodes, :inputs, :output_error_gradients, :hidden_error_gradients,
                    :previous_input_weight_deltas, :previous_hidden_weight_deltas

    def initialize(config)
        initialize_input(config)
        initialize_nodes(config)
        initialize_weights
    end

    def initialize_input(config)
        self.num_inputs = config[:inputs]
        self.inputs = Array.new(num_inputs+1)
        self.inputs[-1] = -1
    end

    def initialize_nodes(config)
        self.num_hidden_nodes = config[:hidden_nodes]
        self.num_output_nodes = config[:output_nodes]
        # treat threshold as an additional input/hidden node with no incoming inputs and a value of -1
        self.output_nodes = Array.new(num_output_nodes)
        self.hidden_nodes = Array.new(num_hidden_nodes+1)
        self.hidden_nodes[-1] = -1
    end

    def initialize_weights
        # …
Run Code Online (Sandbox Code Playgroud)

ruby machine-learning neural-network

6
推荐指数
1
解决办法
4389
查看次数

标签 统计

machine-learning ×1

neural-network ×1

ruby ×1