我正在R中学习Keras,并希望以最少的Mean_absolute_percentage_error
(MAPE)构建和优化NN模型。
我在官方文档page中找到了此示例,但报告为Mean_absolute_error
如何修改该代码以优化MAPE?
答案 0 :(得分:2)
所有这些都可以通过检查keras的官方文档来解决。 metrics函数就是您想要的。在keras中,模型的性能由指标函数来判断。
指标的documentation状态:
“度量标准函数类似于损失函数,除了 训练模型时不使用评估指标的结果。 您可以将任何损失函数用作度量函数。”
如果要使用mean_absolute_percentage_error优化模型,则应寻找损失函数而不是指标。但是更改实际上是一样的。既然您问了关于mean_absolute_error
的问题,我假设您想更改指标。
因此,在示例中,您可以轻松地使用任何loss函数来更改指标参数。当然还有mean_absolute_percentage_error。
build_model <- function() {
model <- keras_model_sequential() %>%
layer_dense(units = 64, activation = "relu",
input_shape = dim(train_data)[2]) %>%
layer_dense(units = 64, activation = "relu") %>%
layer_dense(units = 1)
model %>% compile(
loss = "mse",
optimizer = optimizer_rmsprop(),
metrics = list("mean_absolute_percentage_error")
)
model
}
model <- build_model()
model %>% summary()
在情节中也要这样做。
library(ggplot2)
plot(history, metrics = "mean_absolute_percentage_error", smooth = FALSE) +
coord_cartesian(ylim = c(0, 5)) #you should change lims accordingly
如果要更改损失函数,请在模型构建中使用它。
loss = "mean_absolute_percentage_error",
编辑:由于r documentation使用了另一种语法,因此我不小心在此答案中使用了python文档。但这没有什么区别,因为我们只使用损失函数名称。您也可以像这样使用它:metrics = metric_mean_absolute_percentage_error
。有时在解释功能时会更详细地介绍python文档。