首页 > 解决方案 > 测试和训练之间的 Keras 差异

问题描述

我正在尝试在 keras 中训练自动编码器。在某个时刻,训练程序开始出错。

不幸的是,我没有跟踪发展。但我知道错误必须在这里

def __compile_models__(self):

    metrics_factory = MetricsFactory()

    loss = [metrics_factory.ReconstructionLoss()]*1
    metrics = {'decoder1_output': metrics_factory.RSquareMetrics()}#,
               #'decoder2_output': metrics_factory.RSquareMetrics(),
               #'decoder3_output': metrics_factory.RSquareMetrics(),
               #'decoder4_output': metrics_factory.RSquareMetrics()}

    optimizer = optimizers.Adam(lr=0.001, beta_1=.99, beta_2=.999, epsilon=1e-8)
    self.autoencoder.compile(optimizer, loss, metrics)

def __get_callbacks__(self):
    log = callbacks.CSVLogger(self.model_name+'_training.log')
    sbm = callbacks.ModelCheckpoint(filepath=self.model_name+'_best.w',
        save_weights_only=True, save_best_only=True)
    return [log, sbm]

def train(self, x_train, x_test, iters=1000, epochs=100):

    self.__compile_models__()
    callbacks = self.__get_callbacks__()

    self.autoencoder.fit_generator(
        generator=x_train,
        steps_per_epoch=iters,
        epochs=epochs,
        callbacks=callbacks,
        validation_data=x_test,
        validation_steps=220)

    self.autoencoder.save_weights(self.model_name+'_last.w')

发生的情况是我在训练和测试之间存在巨大差异,即使数据集相同。

220/220 [==============================] - 725s 3s/step - 
loss: 5174.9836 - metrics: 0.5704 - 
val_loss: 214298.1528 - val_metrics: -16.9736

据我所知,网络本身的训练和测试之间没有区别(例如辍学,正则化......)

你们中有人遇到过同样的问题吗?

标签: pythontensorflowkerasdeep-learning

解决方案


推荐阅读