0

SKFLOW を使用して、DNNClassifier の適合をステップ実行したいと思いますが、残念ながら次のようなコードです。

    step_classifier = skflow.DNNClassifier(hidden_units=[10, 20, 10], n_classes=3)
    for _ in range(50):
      step_classifier = step_classifier.partial_fit(X, Y, steps =1 ,batch_size=32)
      score = metrics.accuracy_score(y, step_classifier.predict(x))
      print("Accuracy: %f" % score)

目的の結果が得られません。近似の各反復で同じ精度が得られます。

   Accuracy: 0.315789
     Accuracy: 0.315789
     Accuracy: 0.315789
     Accuracy: 0.315789
   etc

この DNNClassifier の以前のバージョン、つまり TensorFlowDNNClassifier には、目的の効果を生み出す continue_training フラグがあったようです。これは DNNClassifier では使用できません。SKFLOW では、エポック単位の段階的トレーニングはどのように正しく実装されているのでしょうか? ありがとうございました

4

1 に答える 1

1

少し遅れていますが、この回答がお役に立てば幸いです。
行:
step_classifier = step_classifier.partial_fit(X, Y, steps =1 ,batch_size=32)
Has as argument steps = 1. そして、この行を数回呼び出す外側のループを使用します。この行が呼び出されるたびに、サイズ 32 の反復子ミニ バッチが作成され、最初の例から始めて、すべてのステップでデータを反復処理するのではないかと思います。言い換えれば、あなたが を去って以来、イテレータsteps =1を呼び出すたびに最初のトレーニング例から開始されるため、同じ 32 の最初のトレーニング例でのみ決定モデルをトレーニングしているのではないかと思います。step_classifier.partial_fitなどに置き換えsteps = 1てみてくださいsteps = 100

エポックに関しては、私自身が方法を見つけようとしています...まあ、今のところ値の手順を取るだけです = Ceiling(dataset size / mini batch size) * desiredEpochs 代替手段が見つかるまで

于 2016-09-10T19:18:19.003 に答える