仅从第n个时期开始绘制训练跑步损失和指标

时间:2018-07-11 10:27:44

标签: r keras visualization

根据数据,RStudio中的keras模型训练运行看起来像这样。

enter image description here

我不想绘制前几次迭代,因此连续历元的差异清晰可见。有没有办法在R中做到这一点?

我只是尝试在几个时期后停止然后重新启动,所以第二个情节将从我在第一个时期之后停止的地方开始。那行得通,但并不是很方便,特别是如果有很多选项传递给fit,那么会有很多代码重复。

或者,如果拟合模型的plot方法可以做同样的事情,那很好,但我不知道。任何帮助表示赞赏。

enter image description here

1 个答案:

答案 0 :(得分:1)

在模型拟合后,您可以将历史对象转换为数据框,并在绘制之前对其进行操作:

library(tidyverse)
as.data.frame(history) %>%
  filter(epoch > 3) %>%
  ggplot() +
  geom_point(aes(x = epoch, y = value, color = data)) +
  geom_smooth(aes(x = epoch, y = value, color = data)) +
  facet_wrap(~metric, nrow = 2, scales = "free")

enter image description here

我不确定(表示我不知道)在某个时期后如何修改在线图以输出。

可复制的示例:

library(keras)

mnist <- dataset_mnist()
train_images <- mnist$train$x
train_labels <- mnist$train$y

train_images <- array_reshape(train_images, c(60000, 28*28))
train_images <- train_images / 255

train_labels <- to_categorical(train_labels)

network <- keras_model_sequential() %>%
  layer_dense(units = 256,
              activation = "relu",
              input_shape = c(28 * 28)) %>%
  layer_dropout(0.3) %>%
  layer_dense(units = 256,
              activation = "relu") %>%
  layer_dropout(0.3) %>%
  layer_dense(units = 10, activation = "softmax")

network %>% compile(
  optimizer = "rmsprop",
  loss = "categorical_crossentropy",
  metrics = c("accuracy")
)

history <- network %>% fit(train_images,
                           train_labels,
                           epochs = 15,
                           batch_size = 128,
                           validation_split = 0.2)