2
コードに問題がありますか、入力データレコードを追加して隠れ層の数を変更する必要がありますか?私は単純なANNを実装しましたが、目的の出力が得られません
(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, .......
なぜ私は 'ナン' を取得していますすべきではない取得しています。このtutorial(PG 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))
を参照しています?
ANNが見たことのないデータの出力を予測する方法はありますか? 例 - [84,43,89,74,45,32,78,46,43,45]
メソッド正規化データを訓練しますか? ANNはユニバーサル関数の近似器なので、「良い」訓練を実行すると、ANNは未知のデータに対して予測を行うことができます。 – viceriel
まだデータを正規化していません。 ANNが既に見たデータの出力を予測しています。これは正しい出力を提供するはずです。 –