2
코드에 문제가 있습니까? 아니면 더 많은 입력 데이터 레코드를 포함하고 숨겨진 레이어의 수를 변경해야합니까? 나는이 tutorial (대학원 4) 내가간단한 ANN을 구현했지만 원하는 출력을 얻지 못했습니다.
로 내 출력을 얻고있다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, .......
하는 이유는 무엇입니까 '유모'를 말하는거야 ?
ANN이 보지 못한 데이터의 출력을 예측하는 다른 방법이 있습니까? 예 - [84,43,89,74,45,32,78,46,43,45]
정규화 된 데이터를 학습합니까? ANN은 범용 함수 aproximator이므로 "양호한"교육을 수행하면 ANN이 보이지 않는 데이터에 대한 예측을 수행 할 수 있습니다. – viceriel
아직 데이터를 정규화하지 않았습니다. ANN이 이미 본 데이터에 대한 출력을 예측합니다. 그것에 관계없이 올바른 출력을 제공해야합니다. –