keras训练历史日志可视化方法

此部分可参考keras中文文档可视化部分
1.模型可视化 unet模型结构图效果如图:
使用方法:

from keras.utils import plot_model
plot_model(model, to_file='model.png')

其中参数model可由Model()函数返回 例如:

def unet(pretrained_weights = None,input_size = (256,256,3)):
    inputs = Input(input_size)
    #其他层
    conv10 = Conv2D(6, 1, activation = 'softmax')(conv9)
    model = Model(input = inputs, output = conv10)

也可由以下方式返回

model = Sequential()  
#model.add()
return model

2.训练历史可视化

(1) 采用History对象,model.fit(),model.fit_generator()都会返回此对象使用方法示例:

import matplotlib.pyplot as plt

history = model.fit(x, y, validation_split=0.25, epochs=50, batch_size=16, verbose=1)

# 绘制训练 & 验证的准确率值
plt.plot(history.history['accuracy'])#acc最新版keras已经无法使用
plt.plot(history.history['val_accuracy'])#val_acc最新版keras已经无法使用
plt.title('Model accuracy')#图名
plt.ylabel('Accuracy')#纵坐标名
plt.xlabel('Epoch')#横坐标名
plt.legend(['Train', 'Test'], loc='upper left')#角标及其位置
plt.show()
#如果不想画在同一副图上,可关闭再打开
# 绘制训练 & 验证的损失值
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
plt.show()
#图像保存方法
plt.savefig('名称.png')

(2)保存History对象并重新绘制展示

#保存
with open('保存名称.txt', 'wb') as file_pi:
   pickle.dump(H.history, file_pi)
#读取并绘制
    with open('history/trainHistoryDict1.txt', 'rb') as file_pi:
        history = pickle.load(file_pi)
plt.style.use("ggplot")
plt.figure()
N = 16#训练轮数没否则会报错
plt.plot(np.arange(0, N), history["loss"], label="train_loss")
plt.plot(np.arange(0, N), history["val_loss"], label="val_loss")
plt.plot(np.arange(0, N), history["accuracy"], label="train_acc")
plt.plot(np.arange(0, N), history["val_accuracy"], label="val_acc")
plt.title("标题")
plt.xlabel("Epoch #")#横坐标名
plt.ylabel("Loss/Accuracy")#纵坐标名
plt.legend(loc="lower left")#角标位置
plt.show()

图示:(缺点只能获取每轮训练(batch)完毕的整体loss和acc,并不能获得每个epoch的loss和acc)
在这里插入图片描述
3.使用tensorbord工具 查看keras中文档
图示:(其可以记录batch_acc bach_loss epoch_acc,epoch_loss)
在这里插入图片描述
使用方法:

#定义回调函数列表
callbacks_list = [
        #早停回调keras.callbacks.EarlyStopping(monitor='val_accuracy', patience=4),
        #学习率调整回调keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=2, verbose=0, mode='auto',min_lr=0.000001),
        #Epoch结束回调LearningRateScheduler(scheduler, verbose=1),
        keras.callbacks.TensorBoard(log_dir='unetlogs',update_freq=1000)#参数分别为日志存储路径和每多少step进行一次记录,此处不应取太小,会拖慢训练过程
    ]
#再指定回调函数
model.fit_generator(#其他参数, callbacks=callbacks_list)

当训练结束后再pycharm Terminal下或anaconda命令行下虚拟环境里 使用命令:
注意,新版本日志目录可能不需要引号

tensorboard.exe --logdir=日志目录

根据提示浏览器输入地址:http://localhost:6006/

### TensorFlow 和 PyTorch 的模型训练曲线可视化 #### 使用 TensorBoard 进行 TensorFlow 训练曲线可视化 TensorFlow 提供了一个强大的工具——TensorBoard,用于监控和分析模型的训练过程。通过记录日志文件并将这些日志加载到 TensorBoard 中,可以轻松地绘制损失函数、准确率等指标的变化趋势。 以下是使用 TensorBoard 绘制 TensorFlow 模型训练曲线的具体方法: 1. **设置回调函数** 在 TensorFlow 中,可以通过 `tf.keras.callbacks.TensorBoard` 将训练期间的日志写入指定目录。 ```python import tensorflow as tf log_dir = "logs/fit/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1) ``` 2. **启动 TensorBoard** 完成训练后,在终端运行以下命令即可打开 TensorBoard 并查看训练曲线。 ```bash tensorboard --logdir logs/fit/ ``` 此外,还可以通过 Jupyter Notebook 或 Colab 集成 TensorBoard 插件来更方便地展示图表[^1]。 --- #### 使用 Matplotlib 实现 PyTorch 的训练曲线可视化 对于 PyTorch 而言,虽然没有内置类似于 TensorBoard 的工具,但可以借助 Python 的绘图库 matplotlib 来手动绘制训练曲线。 以下是实现这一目标的一个简单例子: ```python import matplotlib.pyplot as plt def plot_training_curve(train_losses, val_losses): epochs = range(1, len(train_losses)+1) plt.figure(figsize=(8, 6)) plt.plot(epochs, train_losses, label='Training Loss') plt.plot(epochs, val_losses, label='Validation Loss') plt.title('Training and Validation Losses Over Epochs', fontsize=14) plt.xlabel('Epochs', fontsize=10) plt.ylabel('Loss', fontsize=10) plt.legend() plt.show() # 假设我们有如下数据 train_losses = [0.9, 0.7, 0.5, 0.3, 0.2] val_losses = [1.0, 0.8, 0.6, 0.4, 0.3] plot_training_curve(train_losses, val_losses) ``` 上述代码会生成一张显示训练集与验证集上损失变化情况的折线图。 --- #### MLflow 对于跨框架可视化的支持 如果希望在一个统一平台上比较不同框架(如 TensorFlow 和 PyTorch)的表现,则可考虑采用 MLflow 工具。MLflow 支持多种机器学习框架,并允许用户追踪实验结果、保存模型版本以及部署生产环境中的预测服务。 利用 MLflow 的 Tracking API,可以在每次迭代结束时记录当前状态下的性能指标,之后再调用其 UI 查看历史记录及其对应的图表表示形式[^2]。 --- ### 总结 无论是 TensorFlow 还是 PyTorch,都有各自的手段完成对模型训练过程中各项数值随时间推移而改变的趋势展现任务;前者依赖专门设计好的插件组件,后者则更多依靠第三方软件包辅助达成目的。与此同时,像 MLflow 这样的通用型解决方案也为多源项目间的数据对比提供了便利条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值