相关疑难解决方法(0)

如何在tensorflow中积累渐变?

我有一个与此类似的问题.

因为我的资源有限而且我使用深度模型(VGG-16) - 用于训练三重网络 - 我想为128个大小的一个训练示例累积渐变,然后传播错误并更新权重.

我不清楚我该怎么做.我使用tensorflow但欢迎任何实现/伪代码.

gradient-descent conv-neural-network tensorflow

11
推荐指数
2
解决办法
4132
查看次数

在 TF.Keras 中使用自定义模型进行梯度累积?

请对您的想法添加最少的评论,以便我可以改进我的查询。谢谢。:)


我正在尝试tf.keras使用梯度累积(GA)训练模型。但我不想在自定义训练循环中使用它(),而是.fit()通过覆盖train_step. 来自定义方法。这可能吗?如何做到这一点?原因是,如果我们想获得keras诸如fit, 之类的内置功能的好处callbacks,我们不想使用自定义训练循环,但同时如果我们train_step出于某种原因(如 GA 或其他)想覆盖,我们可以自定义fit方法并仍然可以利用这些内置函数。

而且,我知道使用GA的优点,但使用它的主要缺点是什么?为什么它不是默认功能,而是框架的可选功能?

# overriding train step 
# my attempt 
# it's not appropriately implemented 
# and need to fix 
class CustomTrainStep(tf.keras.Model):
    def __init__(self, n_gradients, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.n_gradients = n_gradients
        self.gradient_accumulation = [tf.zeros_like(this_var) for this_var in \
                                           self.trainable_variables]

    def train_step(self, data):
        x, y = data
        batch_size = tf.cast(tf.shape(x)[0], tf.float32)  
        # Gradient Tape …
Run Code Online (Sandbox Code Playgroud)

python machine-learning deep-learning keras tensorflow

7
推荐指数
1
解决办法
1001
查看次数