保存加载模型时发生错误:未知损失函数:loss_binary_crossentropy

时间:2019-07-06 17:36:59

标签: r tensorflow keras

我想训练一些模型,然后使用Model Checkpoint回调保存最佳迭代,因此我可以在加载之后使用它。

这是我的代码:

modelConvol <- keras_model_sequential()
  modelConvol %>% 
  layer_conv_1d(filters = 5, kernel_size = 2, activation = "relu", input_shape = input_shape)%>%
  layer_flatten() %>%
  layer_dense(units = 1, activation="sigmoid") %>%

  summary(model)

  modelConvol %>% compile(
  loss = loss_binary_crossentropy,
  optimizer = optimizer_rmsprop(lr = learn_rate),
  metrics = c('accuracy')
)


callbacks <- list(callback_csv_logger("Results/csvlog"),
                  callback_model_checkpoint("Results/bestModel", save_best_only = TRUE, monitor="val_acc"))

history = 
  modelConvol %>% fit(
  x = datos.train.x,
  y = datos.train.y,
  epochs = epochs, 
  batch_size = batch_size, 
  validation_data = list(datos.valid.x, datos.valid.y),
  callbacks = callbacks,
  verbose = 1)


bestModel <- load_model_hdf5(filepath = "Results/bestModel")

在执行load_model_hdf5时,会弹出此错误:

  

py_call_impl(可调用,dots $ args,dots $ keywords)错误:
    ValueError:未知损失函数:loss_binary_crossentropy

我正在使用keras的loss_binary_crossentropy函数,因此无法识别它有意义吗?

如果我尝试仅保存权重而不是完整模型,则:

callbacks <- list(callback_csv_logger("Results/csvlog"),
                  callback_model_checkpoint("Results/bestModel", save_best_only = TRUE, save_weights_only = TRUE, monitor="val_acc"))

(...)

bestModel <- load_model_weights_hdf5(object = modelConv, filepath = "Results/bestModel")

然后出现此错误:

  

do.call(object $ load_weights,args)错误:
    “ what”必须是函数或字符串

我都不知道两种情况下我都缺少什么。由于我只想能够根据模型的最佳时期来评估我的模型,所以我认为它们对我来说都是有效的,因此对它们中的任何一个都可以找到解决方案。

0 个答案:

没有答案
相关问题