探索回调在机器学习中的重要作用——这些工具可以监控、控制和自动化模型训练,从而提高准确性、灵活性和效率。
在机器学习(ML)中,回调是一种 在机器学习(ML)中,回调是一种多功能函数或代码块,用于在计算过程的特定阶段自动运行。在 在训练神经网络(NN)的背景下,回调可作为与神经网络交互的 "钩子"、 回调可作为 "钩子 "与训练生命周期进行交互,以执行以下操作 回调作为与训练生命周期交互的 "钩子",可执行记录指标、保存中间结果或调整参数等操作、 保存中间结果或调整控制参数。通过将这些辅助任务与主 开发人员可以在不修改核心算法的情况下,创建模块化、可读性和高度可定制的工作流。 算法。
典型的训练过程是在数据集上迭代一组 遍数,称为历元。在这个周期内 系统执行前向传递以进行预测,并执行 反向传播来更新 模型权重。回调在这个循环中的预定义 "事件 "时进行干预。 "事件 "时进行回调--例如训练开始、批次结束或历时结束。
Ultralytics 等框架中的Trainer 对象负责管理这些事件。 对象来管理这些事件。当特定事件发生时,训练器会执行任何已注册的回调函数,并将模型的当前状态传递给它们。 模型的当前状态。这种机制是现代 MLOps 的基础,可实现实时 可观察性和自动干预。
回调是深度学习(DL)中优化性能和资源使用所不可或缺的。 深度学习(DL)中优化性能和资源使用所不可或缺的。
"(《世界人权宣言》) ultralytics 库提供了一个直接的 API,用于将自定义回调附加到诸如
YOLO11.这样,用户就可以直接在训练管道中注入特定逻辑,如
打印状态更新或与外部 API 交互。
下面的示例演示了如何添加一个简单的回调,在每个 训练周期结束时打印确认信息:
from ultralytics import YOLO
def on_train_epoch_end(trainer):
"""Callback function to print the current epoch number after it finishes."""
print(f"Custom Callback: Epoch {trainer.epoch + 1} completed successfully.")
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Register the custom callback for the 'on_train_epoch_end' event
model.add_callback("on_train_epoch_end", on_train_epoch_end)
# Train the model with the registered callback
model.train(data="coco8.yaml", epochs=2)
要有效使用回调,最好将其与软件工程和数据科学中的类似术语区分开来。 科学中的类似术语区分开来。
回调的使用可直接转化为更强大、更高效的 人工智能代理和应用程序。例如,在 自动驾驶汽车中,训练模型需要 处理大量传感器数据。回调允许工程师自动快照在困难边缘情况下表现最佳的模型,而无需手动监控。 无需人工监控。同样,在 医疗图像分析中,回调可以 如果模型开始记忆患者数据(过拟合),而不是学习可通用的特征,回调就会触发警报或大量日志记录。 通用特征,确保临床部署的高可靠性。
通过利用回调,使用诸如 PyTorch或 TensorFlow可以构建自我调节系统,从而节省 节省时间、减少错误并最大限度地提高计算机视觉 (CV) 解决方案的性能。 计算机视觉 (CV)解决方案的性能。