相关疑难解决方法(0)

如何在tensorflow 2.0中累积梯度?

我正在用 训练模型tensorflow 2.0。我的训练集中的图像具有不同的分辨率。我构建的模型可以处理可变分辨率(转换层,然后是全局平均)。我的训练集非常小,我想在一个批次中使用完整的训练集。

由于我的图像具有不同的分辨率,因此我无法使用model.fit(). 因此,我计划将每个样本单独通过网络,累积错误/梯度,然后应用一个优化器步骤。我能够计算损失值,但我不知道如何累积损失/梯度。如何累积损失/梯度,然后应用单个优化器步骤?

代码

for i in range(num_epochs):
    print(f'Epoch: {i + 1}')
    total_loss = 0
    for j in tqdm(range(num_samples)):
        sample = samples[j]
        with tf.GradientTape as tape:
            prediction = self.model(sample)
            loss_value = self.loss_function(y_true=labels[j], y_pred=prediction)
        gradients = tape.gradient(loss_value, self.model.trainable_variables)
        self.optimizer.apply_gradients(zip(gradients, self.model.trainable_variables))
        total_loss += loss_value

    epoch_loss = total_loss / num_samples
    print(f'Epoch loss: {epoch_loss}')
Run Code Online (Sandbox Code Playgroud)

python tensorflow tensorflow2.0

8
推荐指数
1
解决办法
6878
查看次数

标签 统计

python ×1

tensorflow ×1

tensorflow2.0 ×1