测试与训练之间的Keras差异

时间:2018-09-07 14:36:57

标签: python tensorflow keras deep-learning

我正在尝试在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

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

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

0 个答案:

没有答案