python - 测试和训练之间的 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
据我所知,网络本身的训练和测试之间没有区别(例如辍学,正则化......)
你们中有人遇到过同样的问题吗?
解决方案
推荐阅读
- applescript - 如何在菜单栏中添加一个按钮以启用和禁用代理?
- apache-spark - Spark按列重新分区,每列具有动态分区数
- regex - 在字符串中使用正则表达式获取特定范围
- python - 如何获得归因于 gensim LSI 文档的主题分数?
- c - 大型数据集的高效输出格式?
- ios - Xcode 11 - 产品/存档卡在通知扩展上
- python-2.7 - 按钮总是返回最后一个 ID,而不是正确的
- sql - Oracle SQL UPDATE SELECT with JOIN 出错
- c - sh 脚本的优先级是否低于由 linux 中的脚本创建的实时进程?
- r - 使用 xlim() 和 facet_wrap(..., scales="free_y" ) 的意外情节