2015-12-28 17 views
5

私はneurolabをpythonで使ってニューラルネットワークを作成しています。ネットワークnewffを作成し、デフォルトのtrain_bfgsトレーニング機能を使用しています。私の問題は何度もあり、エポックがなくなるか、エラーターゲットに達する前にトレーニングが終了します。私は周りを見回し、neurolabs githubページの投稿を見つけました。なぜなら、なぜこのことが起こったのかを説明していたからです。私の問題は、プログラムを数回再実行するだけでキャッチオンになり、トレーニングが開始され、エラーもまた落ちる(おそらくいくつかのランダムなスタートウェイトが他のものよりずっと優れている)ということです。私がしたいことは、エラーが高すぎて訓練されたエポックが総計にも近くない場合、ネットワークを再訓練するようなものです(プログラムを再実行するのと同じように)それは実行し、ここではネットワークのデフォルトの重み)Neurolabはネットワークを再訓練します

は、私が書いたものですが、明らかにそれは

trainingComplete = False 
while not trainingComplete: 
    error = net.train(trainingData, TS, epochs=50, show=10, goal=0.001) 
    if len(error) < 0.8*epochs: 
     if len(error) > 0 and min(error) < 0.01: 
      trainingComplete = True 
     else: 
      net.reset() 
      continue 
    else: 
     trainingComplete = True 

仕事doesntの何が起こっているか、それは最初の条件を通過したとき、すなわち、数が少なすぎるのトレーニングエポックであります再起動する前にnet.reset()を実行した後に、実行中のトレーニングがなく、これが無限ループになります。 私が逃しているものは何ですか?

おかげので

答えて

1

は、これ以降 は、国連は数日間答え行き、私はSOので、私が働いて、周りの仕事を見つけるために私の自己ときにそれを取ったために、その本当に悪いと思います。私はos.execv(__file__, sys.argv)を使用してスクリプトを再起動するのにうんざりしていますが、私のMacでは常に許可の問題であり、ちょうどあまりにも汚いので、今ここでどのように動作するのですか?かなりハックが、ちょっと作品

# Train network 
print('Starting training....') 
trainingComplete = False 
while not trainingComplete: 
    error = net.train(trainingData, TS, epochs=epochs, show=10, goal=0.001) 
    if len(error) < 0.8 * epochs: 
     if len(error) > 0 and min(error) < 0.01: 
      trainingComplete = True 
     else: 
      print('Restarting....') 
      net = createNeuralNetwork(trainingData, [hidden], 1) 
      net.trainf = train_bfgs 
    else: 
     trainingComplete = True 

その:

Starting training.... 
Restarting.... 
Restarting.... 
Restarting.... 
Restarting.... 
Restarting.... 
Restarting.... 
Restarting.... 
Restarting.... 
Epoch: 10; Error: 1.46314116045; 
Epoch: 20; Error: 0.759613243435; 
Epoch: 30; Error: 0.529574731856; 
. 
. 

希望いくつかのいずれか

に役立ちます
関連する問題