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]

+0

メソッド正規化データを訓練しますか? ANNはユニバーサル関数の近似器なので、「良い」訓練を実行すると、ANNは未知のデータに対して予測を行うことができます。 – viceriel

+0

まだデータを正規化していません。 ANNが既に見たデータの出力を予測しています。これは正しい出力を提供するはずです。 –

答えて

0

私はあまりにも高い速度パラメータを設定するとANNライブラリでこの問題が発生します。体重は筋肉痛を開始し(1、-1.5,2、-2.5 0-「良い体重」)、変数の範囲から速く出る。より大きいネットワークでは、低速のレーニング速度が必要です。

関連する問題