我试图了解神经网络应用神经网络识别数字
我组成的输入数组作为
..# ### ### #.#
.## ..# ..# #.#
..# ### ### ###
..# #.. ..# ..#
..# ### ### ..#, etc
期望ouptut我设置为位/ 10,即,位= 5输出= 0.5
代码
require 'ruby-fann'
train = RubyFann::TrainData.new(
inputs: [
[0,0,1,0,1,1,0,0,1,0,0,1,0,0,1],
[1,1,1,0,0,1,1,1,1,1,0,0,1,1,1],
[1,1,1,0,0,1,1,1,1,0,0,1,1,1,1],
[1,0,1,1,0,1,1,1,1,0,0,1,0,0,1],
[1,1,1,1,0,0,1,1,1,0,0,1,1,1,1],
[1,1,1,1,0,0,1,1,1,1,0,1,1,1,1],
[1,1,1,0,0,1,0,1,0,1,0,0,1,0,0],
[1,1,1,1,0,1,1,1,1,1,0,1,1,1,1],
[1,1,1,1,0,1,1,1,1,0,0,1,1,1,1]
],
desired_outputs: [[0.1],[0.2],[0.3], [0.4], [0.5], [0.6], [0.7], [0.8], [0.9]]
)
fann = RubyFann::Standard.new(
num_inputs: 15,
hidden_neurons: [8,4,3,4,1],
num_outputs: 1
)
fann.train_on_data(train, 100000, 10, 0.1) # 100000 max_epochs, 100 errors between reports and 0.1 desired MSE (mean-squared-error)
outputs = fann.run([0,0,1,0,1,1,0,0,1,0,0,1,0,0,1])
result = outputs.first
abort result.inspect
输出每个运行脚本
0.5367386954219215
0.5141728468011051
0.5249739971144654
0.5373135467504666
0.5182686028674102
0.46710004502372293
0.4723526462690119
0.5306690734137796
0.5151398228322749
0.5359153267266001
0.469100790593523
0.4749347798092478
0.5094355973839471
0.5205985468860461
0.5277528652471375
0.4825827561254995
我不明白为什么输出不等于0.1,这与第一个输入完全相同。
什么意思是0.46 - 0.53 diapason中的值?
UPDATE
我用0.1代替0和1用0.9
输出
0.4794515462681635
0.5332274595769928
0.4601992972516728
0.427064909364266
0.43466252163025687
0.46931411920827737
0.4455544021835517
0.48051179013023565
0.4798245565677274
0.4479353078492235
0.4646710791032779
0.4887400910135108
此外,我添加1输入为数字零,什么都没有发生显著
什么'RubyFann'?这是一个标准的宝石? –
是的,因为我理解它的C++快速人工神经网络库封装器 –
也许你应该使用浮点数作为训练数据? –