`keras.callbacks.Callback`
~~~
on_epoch_begin #在每轮开始时被调用
on_epoch_end #在每轮结束时被调用
on_batch_begin #在处理每个批量之前被调用
on_batch_end #在处理每个批量之后被调用
on_train_begin #在训练开始时被调用
on_train_end #在训练结束时被调用
~~~
调函数中,那么可以编写你自己的回调函数。回调函数的实现方式是创建`keras.callbacks.Callback`类的子类。然后你可以实现下面这些方法(从名称中即可看出这些方法的作用),它们分别在训练过程中的不同时间点被调用。
~~~
on_epoch_begin ←------ 在每轮开始时被调用
on_epoch_end ←------ 在每轮结束时被调用
on_batch_begin ←------ 在处理每个批量之前被调用
on_batch_end ←------ 在处理每个批量之后被调用
on_train_begin ←------ 在训练开始时被调用
on_train_end ←------ 在训练结束时被调用
~~~
这些方法被调用时都有一个`logs`参数,这个参数是一个字典,里面包含前一个批量、前一个轮次或前一次训练的信息,即训练指标和验证指标等。此外,回调函数还可以访问下列属性。
* `self.model`:调用回调函数的模型实例。
* `self.validation_data`:传入`fit`作为验证数据的值。
下面是一个自定义回调函数的简单示例,它可以在每轮结束后将模型每层的激活保存到硬盘(格式为 Numpy 数组),这个激活是对验证集的第一个样本计算得到的。
~~~
import keras
import numpy as np
class ActivationLogger(keras.callbacks.Callback):
def set_model(self, model):
self.model = model #在训练之前由父模型调用,告诉回调函数是哪个模型在调用它
layer_outputs = [layer.output for layer in model.layers]
self.activations_model = keras.models.Model(model.input,
layer_outputs) #模型实例,返回每层的激活
def on_epoch_end(self, epoch, logs=None):
if self.validation_data is None:
raise RuntimeError('Requires validation_data.')
validation_sample = self.validation_data[0][0:1] #获取验证数据的第一个输入样本
activations = self.activations_model.predict(validation_sample)
f = open('activations_at_epoch_' + str(epoch) + '.npz', 'w') #(以下3行)将数组保存到硬盘
np.savez(f, activations)
f.close()
~~~
- 基础
- 张量tensor
- 整数序列(列表)=>张量
- 张量运算
- 张量运算的几何解释
- 层:深度学习的基础组件
- 模型:层构成的网络
- 训练循环 (training loop)
- 数据类型与层类型、keras
- Keras
- Keras 开发
- Keras使用本地数据
- fit、predict、evaluate
- K 折 交叉验证
- 二分类问题-基于梯度的优化-训练
- relu运算
- Dens
- 损失函数与优化器:配置学习过程的关键
- 损失-二分类问题
- 优化器
- 过拟合 (overfit)
- 改进
- 小结
- 多分类问题
- 回归问题
- 章节小结
- 机械学习
- 训练集、验证集和测试集
- 三种经典的评估方法
- 模型评估
- 如何准备输入数据和目标?
- 过拟合与欠拟合
- 减小网络大小
- 添加权重正则化
- 添加 dropout 正则化
- 通用工作流程
- 计算机视觉
- 卷积神经网络
- 卷积运算
- 卷积的工作原理
- 训练一个卷积神经网络
- 使用预训练的卷积神经网络
- VGG16
- VGG16详细结构
- 为什么不微调整个卷积基?
- 卷积神经网络的可视化
- 中间输出(中间激活)
- 过滤器
- 热力图
- 文本和序列
- 处理文本数据
- n-gram
- one-hot 编码 (one-hot encoding)
- 标记嵌入 (token embedding)
- 利用 Embedding 层学习词嵌入
- 使用预训练的词嵌入
- 循环神经网络
- 循环神经网络的高级用法
- 温度预测问题
- code
- 用卷积神经网络处理序列
- GRU 层
- LSTM层
- 多输入模型
- 回调函数
- ModelCheckpoint 与 EarlyStopping
- ReduceLROnPlateau
- 自定义回调函数
- TensorBoard_TensorFlow 的可视化框架
- 高级架构模式
- 残差连接
- 批标准化
- 批再标准化
- 深度可分离卷积
- 超参数优化
- 模型集成
- LSTM
- DeepDream
- 神经风格迁移
- 变分自编码器
- 生成式对抗网络
- 术语表