gpt4 book ai didi

ruby - 在 Ruby 中为 XOR 训练神经网络

转载 作者:数据小太阳 更新时间:2023-10-29 07:05:56 27 4
gpt4 key购买 nike

我正在尝试训练一个前馈网络来使用 Ruby 库 AI4R 执行异或运算。然而,当我在训练后评估 XOR 时。我没有得到正确的输出。有没有人以前使用过这个库并得到它来学习异或运算。

我使用了两个输入神经元,一个隐藏层中的三个神经元,一个输出层,正如我看到的预计算XOR 前馈神经网络就像这样。

require "rubygems"
require "ai4r"

# Create the network with:
# 2 inputs
# 1 hidden layer with 3 neurons
# 1 outputs
net = Ai4r::NeuralNetwork::Backpropagation.new([2, 3, 1])

example = [[0,0],[0,1],[1,0],[1,1]]
result = [[0],[1],[1],[0]]

# Train the network
400.times do |i|
j = i % result.length
puts net.train(example[j], result[j])
end

# Use it: Evaluate data with the trained network
puts "evaluate 0,0: #{net.eval([0,0])}" # => evaluate 0,0: 0.507531383375123
puts "evaluate 0,1: #{net.eval([0,1])}" # => evaluate 0,1: 0.491957823618629
puts "evaluate 1,0: #{net.eval([1,0])}" # => evaluate 1,0: 0.516413912471401
puts "evaluate 1,1: #{net.eval([1,1])}" # => evaluate 1,1: 0.500197884691668

泰德

最佳答案

您尚未对其进行足够的迭代训练。如果将 400.times 更改为 8000.times,您会更接近(并且更接近 20000.times)。

20000.times,我得到

puts "evaluate 0,0: #{net.eval([0,0])}"  # =>  evaluate 0,0: 0.030879848321403
puts "evaluate 0,1: #{net.eval([0,1])}" # => evaluate 0,1: 0.97105714994505
puts "evaluate 1,0: #{net.eval([1,0])}" # => evaluate 1,0: 0.965055940880282
puts "evaluate 1,1: #{net.eval([1,1])}" # => evaluate 1,1: 0.0268317078331645

您还可以增加 net.learning_rate(但不要太多)。

关于ruby - 在 Ruby 中为 XOR 训练神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4190455/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com