VAE 自动编码器训练 fit_generator 似乎并没有减少损失

时间:2021-07-05 07:53:21

标签: python tensorflow

我尝试使用 fit_generator 函数。奇怪的是,当我使用 fit_generator 时,损失似乎只是慢慢下降了一点。就像我已经训练了大约 5 天一样,我的损失从 129 减少到 119。但是我搜索了模型训练需要多长时间,它在互联网上说只有 8 小时。我确实认为这是我的问题,但我不知道是什么问题,所以我希望有人能帮助我!而我的数据只使用了 100 张图片。

下面是我的训练代码

vae_model.compile(optimizer=adam_optimizer, loss = total_loss, metrics = [r_loss, kl_loss],experimental_run_tf_function=False)
N_EPOCHS = 3000 
zz = '/weights.h5'
vae_model.load_weights(zz)
checkpoint_vae = ModelCheckpoint(zz, save_weights_only = True, verbose=1)

vae_model.fit_generator(data_flow, 
            shuffle=False, 
            epochs = N_EPOCHS, 
            initial_epoch = 0, 
            steps_per_epoch=tr_num / BATCH_SIZE,
            callbacks=[checkpoint_vae])
LEARNING_RATE = 0.0005
LOSS_FACTOR = 10000

def r_loss(y_true, y_pred):
    return K.mean(K.square(y_true - y_pred), axis = [1,2,3])

def kl_loss(y_true, y_pred):
    kl_loss =  -0.5 * K.sum(1 + log_var - K.square(mean_mu) - K.exp(log_var), axis = 1)
    return kl_loss

def total_loss(y_true, y_pred):
    return LOSS_FACTOR*r_loss(y_true, y_pred) + kl_loss(y_true, y_pred)
  
adam_optimizer = Adam(lr = LEARNING_RATE, beta_1=0.5, beta_2=0.9)

0 个答案:

没有答案