Prečo sú váhy využiteľný len v tréningu?

0

Otázka

Po zavolaní na nosenie funkciu vidím, že model je podobný vo výcviku, ale potom, čo som ísť zavolať hodnotiť metóda pôsobí to, ako keby modelu neurobil montáž na všetky. Najlepší príklad je nižšie, kde som použiť školenia generátor pre vlak a validácia a získať rôzne výsledky.

import tensorflow as tf
from tensorflow.keras.callbacks import ModelCheckpoint

from ImageGenerator import ImageGenerator

if __name__== "__main__":

    batch_size=64

    train_gen = ImageGenerator('synthetic3/train/open/*.png', 'synthetic3/train/closed/*.png', batch_size=batch_size)

    model = tf.keras.applications.mobilenet_v2.MobileNetV2(weights=None, classes=2, input_shape=(256, 256, 3))

    model.compile(optimizer='adam', 
                loss=tf.keras.losses.CategoricalCrossentropy(),
                metrics=['accuracy'])

    history = model.fit(
        train_gen,
        validation_data=train_gen,
        epochs=5,
        verbose=1
    )
    
    model.evaluate(train_gen)

Výsledky

Epoch 1/5
19/19 [==============================] - 11s 600ms/step - loss: 0.7707 - accuracy: 0.5016 - val_loss: 0.6932 - val_accuracy: 0.5016
Epoch 2/5
19/19 [==============================] - 10s 533ms/step - loss: 0.6991 - accuracy: 0.5855 - val_loss: 0.6935 - val_accuracy: 0.4975
Epoch 3/5
19/19 [==============================] - 10s 509ms/step - loss: 0.6213 - accuracy: 0.6637 - val_loss: 0.6932 - val_accuracy: 0.4992
Epoch 4/5
19/19 [==============================] - 10s 514ms/step - loss: 0.4407 - accuracy: 0.8158 - val_loss: 0.6934 - val_accuracy: 0.5008
Epoch 5/5
19/19 [==============================] - 10s 504ms/step - loss: 0.3200 - accuracy: 0.8643 - val_loss: 0.6949 - val_accuracy: 0.5000
19/19 [==============================] - 3s 159ms/step - loss: 0.6953 - accuracy: 0.4967

Je to problematické, pretože aj keď úsporu hmotnosti šetrí ako v prípade modelu neurobil montáž.

keras machine-learning python tensorflow
2021-11-24 04:34:14
2
0

vyhodnotenie() funkcia vyžaduje overenie dataset ako vstup na vyhodnotenie už vyškolení model.

Od vyzerá to používate príprava súboru (train_gen) pre validation_data a odovzdávanie istého súboru ako vstup do modelu.vyhodnotenie()

2021-11-24 11:43:27

Jo, ja som urobil, že na účel ukázať, že aj keď vlak presnosť je zlepšovanie validácie nie je. Dokonca aj na rovnakom dátovom
ac4824

Najlepšiu odpoveď

0

Ahoj všetci po mnohých dňoch bolesti konečne objavil riešenie tohto problému. Je to spôsobené šarže normalizácie vrstvy v modeli. Hybnosť parameter musí byť zmenené podľa vašej veľkosti dávky, ak máte v pláne na školenia ako vlastné dataset.

for layer in model.layers:
    if type(layer)==type(tf.keras.layers.BatchNormalization()):
        # renorm=True, Can have renomalization for smaller batch sizes
        layer.momentum=new_momentum

Zdroje: https://github.com/tensorflow/tensorflow/issues/36065

2021-12-10 04:30:31

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................