代码有问题,还是需要包含更多输入数据记录并更改隐藏层数?我指的是tutorial(第4页)
import cv2
import numpy as np
ann = cv2.ml.ANN_MLP_create()
ann.setTrainMethod(cv2.ml.ANN_MLP_RPROP | cv2.ml.ANN_MLP_UPDATE_WEIGHTS)
ann.setActivationFunction(cv2.ml.ANN_MLP_SIGMOID_SYM)
ann.setLayerSizes(np.array([10, 9, 3]))
ann.setTermCriteria(( cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1 ))
i1 = [190, 150, 170, 290, 280, 270, 400, 320, 330,349]
i2 = [95, 95, 31, 64, 98, 39, 18, 12, 48,74]
i3 = [48, 45, 19, 78, 23, 32, 30, 32, 33,79]
o1 = [0, 0, 1]
o2 = [0, 1, 0]
o3 = [1, 0, 0]
SAMPLES = 5000
for x in range(0, SAMPLES):
print "Samples %d/%d" % (x, SAMPLES)
ann.train(np.array([i1,i2,i3], dtype=np.float32), cv2.ml.ROW_SAMPLE, np.array([o1,o2,o3], dtype=np.float32))
print ann.predict(np.array([i1], dtype=np.float32))
print ann.predict(np.array([i2], dtype=np.float32))
print ann.predict(np.array([i3], dtype=np.float32))
我的输出为
(0.0, array([[nan, nan, nan]], dtype=float32))
(0.0, array([[nan, nan, nan]], dtype=float32))
(0.0, array([[nan, nan, nan]], dtype=float32))
不应该是预期的输出
(0.0, .......
(1.0, .......
(2.0, .......
为什么我得到' nan' ?
还有其他方法可以预测ANN尚未见到的数据输出吗? 例子 - [84,43,89,74,45,32,78,46,43,45]
答案 0 :(得分:0)
当我设置太高的速度参数时,我在我的人工智能库中遇到了这个问题。重量开始oslilating(1,-1.5,2,-2.5 0-“良好的重量”)和快速从变量范围出去。较大的网络应该具有较小的学习速度参数。