如何从头开始在 Tensorflow 中构建自定义的可用于生产的深度学习训练循环

使用检查点和 Tensorboards 可视化在 Tensorflow 和 Python 中构建自定义训练循环

来源:AI夏令营

毫无疑问,训练是开发机器学习应用程序最重要的部分。当你开始意识到你的模型是否值得,你的超参数应该是什么样子,以及你需要在你的架构中改变什么时,你就会开始意识到。一般来说,大多数机器学习工程师会花相当多的时间进行训练,尝试不同的模型,调整他们的架构,并发现他们问题的最佳指标和损失。

在本文中,我们将继续“生产中的深度学习”系列,为我们目前使用的分割示例构建一个模型训练器。我认为这次最好不要概述基本主题和软件工程原理,而是逐步完成整个开发生命周期。因此,我们将像在日常工作中一样对整个 Trainer 类进行编程。这也是一个应用我们在本系列中讨论的所有最佳实践的好机会。我们将探索如何实时构建高性能和高度可维护的软件。

为我们的分割示例构建模型训练器

所以这次要准备好大量代码。事不宜迟,让我们开始吧。

在 Tensorflow 中构建训练循环

首先。让我们回顾一下到目前为止的代码。到目前为止,我们的 colab 笔记本中只有样板 Keras 代码,其中包括模型编译和拟合。

self.model.compile(optimizer=self.config.train.optimizer.type,

自身 . 模型 . 编译 ( 优化器 = 自身 . 配置 . 训练 . 优化器 . 类型 ,

loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),

损失 = tf keras 损失 SparseCategoricalCrossentropy ( from_logits = True ) ,

metrics=self.config.train.metrics)

metrics = self . 配置 火车 . 指标 )

LOG.info('训练已开始')

LOG . 信息 ( '训练已开始' )

model_history = self.model.fit(self.train_dataset, epochs=self.epoches,

model_history = self . 模型 . 拟合 ( self . train_dataset , epochs = self . 纪元 ,

steps_per_epoch=self.steps_per_epoch,

steps_per_epoch =