根据数据,RStudio中的keras模型训练运行看起来像这样。
我不想绘制前几次迭代,因此连续历元的差异清晰可见。有没有办法在R中做到这一点?
我只是尝试在几个时期后停止然后重新启动,所以第二个情节将从我在第一个时期之后停止的地方开始。那行得通,但并不是很方便,特别是如果有很多选项传递给fit
,那么会有很多代码重复。
或者,如果拟合模型的plot
方法可以做同样的事情,那很好,但我不知道。任何帮助表示赞赏。
答案 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")
我不确定(表示我不知道)在某个时期后如何修改在线图以输出。
可复制的示例:
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)