我想训练一些模型,然后使用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”必须是函数或字符串
我都不知道两种情况下我都缺少什么。由于我只想能够根据模型的最佳时期来评估我的模型,所以我认为它们对我来说都是有效的,因此对它们中的任何一个都可以找到解决方案。