2017-07-10 9 views
3

トレーニングを行わずにモデルの精度を判断しようとしていて、レイヤーをすべてtrainable = Falseに設定しました。レイヤーが訓練可能でないときにケラスモデルをフィットすると、結果が一致しない

shuffle = Falseの発電機でfit_generatorを実行すると、毎回一貫した結果が得られます。

shuffle = Trueのジェネレータでfit_generatorを実行すると、結果は少し跳ね上がります。入力データが同じで、モデルがトレーニングではないとすれば、モデルの内部状態は変わらず、順序は問わず同じデータセットで同じであることが期待されます。

しかし、この順序依存性は、trainable = Falseにもかかわらず、モデルの状態の種類が変化していることを意味します。これを引き起こしているモデル内で何が起こっていますか?

+1

numpy.random.seed()を使用してシードを設定した後でも、これは再現可能ですか? – abhiieor

+0

シードの設定を試していないのですが、入力データの順序が同じであることを保証しませんか?私の理解は、順序はここでは問題ではないはずですが、私は何かを明確に欠いています。 – jvans

+1

私の提案は主にあなたの仮説をテストすることです。ニューラルネットは設計上ノイズが多いため、常に再現可能なケースが存在します。 – abhiieor

答えて

0

これは本当に興味深い現象です。おそらく、ほとんどのニューラルネットワークパッケージではfloat32の精度が使用されるため、小数点以下5桁までの精度が得られます。 Hereあなたは詳細な説明を読むことができます。

関連する問題