【问题标题】:SGD with weight decay parameter in tensorflowtensorflow中带有权重衰减参数的SGD
【发布时间】:2020-10-20 19:53:18
【问题描述】:

在 Keras 和 Pytorch 中,SGD 优化器有权重衰减参数。我发现 tf.train.GradientDescentOptimizer 没有权重衰减参数。具有权重衰减的 SGD 的张量流当量是多少?

Pytorch 优化 - https://pytorch.org/docs/stable/optim.html

Keras 优化器 - https://keras.io/optimizers/

【问题讨论】:

  • 如果权重衰减是指 L2 正则化,请看here

标签: python tensorflow optimization deep-learning


【解决方案1】:

在 TensorFlow 中获得权重衰减的一种方法是将 L2 正则化添加到损失中。根据 Loshchilov & Hutter 的 Decoupled Weight Decay Regularization 论文,这相当于标准 SGD(但不适用于自适应梯度优化器)的权重衰减。

【讨论】:

    【解决方案2】:
    1. tensorflow-addons 包中有一个解耦权重衰减的实现。见

      https://www.tensorflow.org/addons/api_docs/python/tfa/optimizers/SGDW

    2. pytorch.optimweight_decay是L2-regularization,它可以得到相同的结果,但weight_decay参数的值不同。

      要在 TensorFlow 中使用与 pytorch 相同的行为,请添加 L2 正则化。如果您的层很密集,一种方法是:

      tf.keras.layers.Dense(
         num_classes,
         activation=dont_care,
         kernel_initializer=dont_care,
         kernel_regularizer=tf.keras.regularizers.l2(L2_WEIGHT_DECAY),
         bias_regularizer=tf.keras.regularizers.l2(L2_WEIGHT_DECAY))
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 2021-02-13
      相关资源
      最近更新 更多