Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中的神经网络训练_Ruby_Artificial Intelligence_Neural Network - Fatal编程技术网

Ruby中的神经网络训练

Ruby中的神经网络训练,ruby,artificial-intelligence,neural-network,Ruby,Artificial Intelligence,Neural Network,说到神经网络,我完全是个初学者。我一整天都在和ruby fann和ai4r搏斗,不幸的是我没有任何东西可以展示,所以我想我会来到Stack Overflow,问问这里有知识的人 我有一组样本——每天都有一个数据点,但它们不符合我能够找到的任何清晰模式(我尝试了几个回归)。尽管如此,我认为如果有任何方法可以预测从日期到未来的数据,那将是一件好事,我认为神经网络将是一种很好的方法来生成一个函数,希望能够表达这种关系 日期是DateTime对象,数据点是十进制数,如7.68。我将DateTime对象转

说到神经网络,我完全是个初学者。我一整天都在和ruby fann和ai4r搏斗,不幸的是我没有任何东西可以展示,所以我想我会来到Stack Overflow,问问这里有知识的人

我有一组样本——每天都有一个数据点,但它们不符合我能够找到的任何清晰模式(我尝试了几个回归)。尽管如此,我认为如果有任何方法可以预测从日期到未来的数据,那将是一件好事,我认为神经网络将是一种很好的方法来生成一个函数,希望能够表达这种关系

日期是DateTime对象,数据点是十进制数,如7.68。我将DateTime对象转换为浮点数,然后除以1000000000得到一个介于0和1之间的数字,我将十进制数除以1000也得到一个介于0和1之间的数字。我有一千多个样品。。。下面是一段简短的摘录:

[
  ["2012-03-15", "7.68"],
  ["2012-03-14", "4.221"],
  ["2012-03-13", "12.212"],
  ["2012-03-12", "42.1"]
]
当转换时,它是这样的:

[
  [0.13317696, 0.000768],
  [0.13316832, 0.0004221],
  [0.13315968, 0.0012212],
  [0.13315104, 0.00421]
]
我有点希望这种转变不是必要的,但我离题了。问题是AI4R和Ruby FANN都返回一个常量,通常是在样本的中间,当我运行它们时。以下是ruby fann的代码:

@fann = RubyFann::Standard.new(:num_inputs=>1, :hidden_neurons=>[3, 3], :num_outputs=>1)
training_data = RubyFann::TrainData.new(:inputs => formatted_data.collect{|d| [d.first]}, :desired_outputs => formatted_data.collect{|d| [d.last]})
@fann.train_on_data(training_data, 1000, 1, 0.0001)
@fann.run([DateTime.now.to_f / 10000000000.0]) # Always something random, and always the same number no matter what date I request it for
对于ai4r:

@ai4r = Ai4r::NeuralNetwork::Backpropagation.new([1, 3, 3, 1])
1000.times do
  formatted_data.each do |data|
    @ai4r.train(data.first, data.last)
  end
end
@ai4r.eval([DateTime.now.to_f / 10000000000.0]) # A different result frmo above, but always seemingly random and the same for any requested date

我觉得我错过了一些基本的东西。我知道这是一个相当开放的问题,但如果有人能帮我弄清楚我是如何不当地教授我的神经网络的,我将非常感激

阿尔法的评论很有道理,使用NN的替代方法可能更合适

这取决于问题,但如果一天的价值甚至部分是 将前几天的值作为时间序列处理可能会产生更好的结果 结果

然后,您将教NN生成一天的值作为函数 例如,前十天值的窗口;你也可以保留日期 参数作为[0,1]之间的实际输入比例,因为您认为它有显著的影响
一天的价值。

你的问题之一是你处理的数字太少。当我将期望误差设置为0.0001时,我甚至无法正确预测您上面提到的训练数据。您应该考虑任何其他方式来编码您的输入和输出。将年、月和日单独输入是否合理?也许您可以对这些特性()中的任何一个使用c中的1编码。我遇到了同样的问题-您有没有弄明白这一点?我们一定是神经网络出了问题,我不明白。。