- Keras深度学习:入门、实战与进阶
- 谢佳标
- 529字
- 2024-10-30 00:46:58
3.3.2 模型训练可视化
RStudio提供了在Keras模型训练时的评估指标实时可视化,当训练模型时,可以在RStudio右下角的view窗口查看评估指标的实时变化曲线。具体实现代码如下,结果如图3-13所示。
library(keras) library(caret) # 数据预处理 X <- as.matrix(iris[,1:4]) X_scale <- scale(X) dmy <- dummyVars(~Species,data = iris,levelsOnly = TRUE) y <- as.matrix(data.frame(predict(dmy,newdata = iris))) # 定义、编译及训练模型 model <- keras_model_sequential() model %>% layer_dense(units = 4,activation = 'relu',input_shape = c(4)) %>% layer_dense(units = 6,activation = 'relu') %>% layer_dense(units = 3,activation = 'softmax') model %>% compile( loss = 'categorical_crossentropy', optimizer = 'adam', metrics = c('accuracy') ) history <- model %>% fit( x = X_scale, y = y, batch_size = 16, epochs = 100, validation_split = 0.1, verbose = 2 )
图3-13 RStudio IDE实时查看评估指标
Keras的fit()函数返回一个对象,该对象包含训练历史记录。可以通过plot()函数绘制每个训练周期的评估指标,如图3-14所示。
plot(history)
图3-14 绘制每个训练周期的评估指标
图3-14的上部分绘制的是训练和验证数据的计算损失,下部分绘制的是训练和验证数据的准确率。乍一看,这个图有点混乱,接下来我们将拆分这个图,然后分别绘制两个图:一个用于模型损失,另一个用于模型准确率。运行以下程序代码,结果如图3-15所示。
> par(mfrow=c(1,2)) > # 绘制模型计算损失 > # 绘制训练数据的计算损失 > plot(history$metrics$loss, main="Model Loss", xlab = "epoch", + ylab="loss", col="purple", type="l",lty=1,lwd=2) > # 绘制验证数据的计算损失 > lines(history$metrics$val_loss, col="seagreen",lty=2,lwd=2) > # 增加图例 > legend("topright", c("train","test"), col=c("purple", "seagreen"), + lty=c(1,2),lwd=c(2,2)) > # 绘制模型准确率 > # 绘制训练数据的准确率 > plot(history$metrics$accuracy, main="Model Accuracy", xlab = "epoch", + ylab="loss", col="violetred", type="l",lty=1,lwd=2) > # 绘制验证数据的准确率 > lines(history$metrics$val_accuracy, col="steelblue1",lty=2,lwd=2) > # 增加图例 > legend("bottomright", c("train","test"), col=c("violetred", "steelblue1"), + lty=c(1,2),lwd=c(2,2)) > par(mfrow=c(1,1))
图3-15 自定义可视化
在图3-15中,损失和准确率各用一个图单独绘制,并且使用实线(训练数据)、虚线(验证数据)绘制,增加了不同样本曲线的区分度。