Обратный вызов Keras Tensorboard не записывает скаляры (потеря) - PullRequest
0 голосов
/ 20 июня 2019

Я использовал обратные вызовы тенорарта keras, и это работало довольно хорошо. На этой неделе я написал новый код, и обратный вызов больше не хранит скаляры, даже когда я указываю метрики в операторе model.compile ().

По умолчанию, даже без указания метрик, он использовался для захвата потерь после каждой итерации в предыдущем коде.

Наконец, чтобы проверить, есть ли проблема с установкой тензорной доски, я попытался снова запустить старый код, и он, кажется, работает нормально, но новый код не работает. Единственная разница между старым и новым кодом заключается в том, что я использовал генератор данных в новом коде и использовал model.fit_generator () вместо model.fit ().

Я попытался переустановить тензорную доску, но это, похоже, не решило проблему.

Старый код -

def train(X,Y,val_split,checkpoint):

    model=segmenter()
    initial_epoch=0
    if checkpoint is not None:
        model.load_weights(checkpoint, by_name=True)
        initial_epoch=int(re.search(r'\d+', os.path.basename(checkpoint)).group())

    adam=Adam(lr=0.00001)
    model.compile(optimizer=adam,loss='mean_squared_error')
    filepath="checkpoint-{epoch:06d}.hdf5_50_50"
    checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1, save_best_only=True)
    #for visualisation
    visualisation= TensorBoard(log_dir='./logs', histogram_freq=0, batch_size=BATCH_SIZE, write_graph=True, write_grads=False, write_images=False, embeddings_freq=0, embeddings_layer_names=None, embeddings_metadata=None)
    callbacks_list = [checkpoint,visualisation]
    model.fit(x=X,y=Y,epochs=EPOCHS,batch_size=BATCH_SIZE, validation_split=val_split,callbacks=callbacks_list, shuffle=True, initial_epoch=initial_epoch )

Новый код -

def train(namelistfile,val_split=0.1,checkpoint=None,batch_size=1):

    #getting file names
    with open(namelistfile,'r') as f:
        namelist=[line.replace('\n','') for line in f ]

    # Generators
    split=int((1-val_split)*len(namelist))
    training_generator = mygenerator(namelist=namelist[:split], batch_size=batch_size)
    validation_generator = mygenerator(namelist=namelist[split:], batch_size=batch_size)

    # Training
    model=autoencoder()
    model.summary()
    initial_epoch=0
    if checkpoint is not None:
        model.load_weights(checkpoint,by_name=True)
        initial_epoch=int(re.search(r'\d+', os.path.basename(checkpoint)).group())
    adam=Adam(lr=0.001) 
    model.compile(optimizer=adam,loss='mean_squared_error',metrics=['mean_squared_error'])
    filepath="checkpoint-{epoch:06d}.hdf5"
    checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1, save_best_only=True)
    #for visualisation
    visualisation= TensorBoard(log_dir='./logs', histogram_freq=0, batch_size=batch_size, write_graph=True, write_grads=False, write_images=False, embeddings_freq=0, embeddings_layer_names=None, embeddings_metadata=None)
    callbacks_list = [checkpoint,visualisation]
    model.fit_generator(generator=training_generator,validation_data=validation_generator,epochs=EPOCHS,callbacks=callbacks_list, initial_epoch= initial_epoch, use_multiprocessing=True,workers=6)

Ниже приведены результаты для

tensorboard --inspect --logdir=logs

Для старого кода

======================================================================
Processing event files... (this can take a few minutes)
======================================================================

Found event files in:
logs

These tags are in logs:
audio -
histograms -
images -
scalars
   loss
   val_loss
tensor -
======================================================================

Event statistics for logs:
audio -
graph
   first_step           0
   last_step            0
   max_step             0
   min_step             0
   num_steps            1
   outoforder_steps     []
histograms -
images -
scalars
   first_step           301
   last_step            301
   max_step             301
   min_step             301
   num_steps            1
   outoforder_steps     []
sessionlog:checkpoint -
sessionlog:start -
sessionlog:stop -
tensor -
======================================================================

Для нового кода


======================================================================
Processing event files... (this can take a few minutes)
======================================================================

Found event files in:
logs

These tags are in logs:
audio -
histograms -
images -
scalars -
tensor -
======================================================================

Event statistics for logs:
audio -
graph
   first_step           0
   last_step            0
   max_step             0
   min_step             0
   num_steps            1
   outoforder_steps     []
histograms -
images -
scalars -
sessionlog:checkpoint -
sessionlog:start -
sessionlog:stop -
tensor -
======================================================================


Тензорборд не дает ошибок. Кажется, я что-то упустил, и с моим кодом возникла проблема Может кто-нибудь, пожалуйста, помогите мне с этим, поскольку трудно представить без тензорной доски.

TensorBoard 1.5.1
Keras 2.1.2
Tesorflow 1.4.1
Python 2.7.6 
...