2016-12-31 6 views
0

テンソルをバックエンドとしてkerasのu-net実装を実行しています。実験では、私は60エポックを実行します。損失プロットは次のように表示されますが、プログラムが収束したと仮定できますか?その損失は大きく変化しないと私に見える。損失プロットとそれが収束するかどうかを判断するための基準

これは、オプティマイザの定義とトレーニングプロセスの起動に関連するコードです。

optimizer = SGD(lr=0.001, momentum=0.9, decay=0.0005, nesterov=False) 
    autoencoder.compile(loss=customized_loss, optimizer=optimizer, metrics= [customized_dice]) 
    nb_epoch = 60 
    batch_size = 32 
    model.fit(imgs_train, imgs_mask_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1,callbacks=[model_checkpoint]) 

enter image description here

+0

このトレーニングまたは検証の損失ですか?検証の場合、これは収束に近似していないように見えますが、もっと長く実行する必要があります。また、より高い学習率を試してください –

+0

こんにちは、私はそれがトレーニングの損失だと思います。オプティマイザの定義とトレーニングの開始に関連するコードが含まれていました。コメントがあれば教えてください。ありがとう。 – user297850

+0

私たちはあなたを助けるためにこれがどの損失であるかを知る必要があります。あなたのモデルのコスト損失です。それはあなたが収束または正確さではなく、信頼を特定するのに役立ちます。あなたは過度のフィッティングをしているかもしれませんが、この制限には、コストではなくトレーニングと検証の損失をプロットする必要があります。 – Feras

答えて

0

収束している - 初期収束が速く、それが遅くなる - それは普通のことだ、それは多くのことを遅く、まだ有意義に向上させることができます。 60回のエポックは、ネットワーク内のパラメータの数とトレーニングデータの量によっては、時間がかかる場合もあれば長くなる場合もあります。あなたはそれが収束していると判断する前に、かなりの量のエポックで本質的に下降傾向を望みません。

「経験年数の総数/ 4」のようなものがあります。

別の質問は、過剰訓練かどうかです。そのための検証の損失を見なければなりません。トレーニングのデータの1/10または1/5をホールドし、検証のためにそれを使用します。検証の損失が一貫して増加し始めたら、あなたは過剰なトレーニングを受けます。

関連する問題