Tag: 机器学习

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

我正在尝试学习神经网络并编写一个简单的反向传播神经网络,该网络使用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 […]