Skip to main content
 首页 » 编程设计

python之TensorFlow v2 替换 clip_gradients_by_norm

2024年11月01日36hnrainll

我正在学习 Google Developers 的机器学习速成类(class)。给出的示例是在 TensorFlow < 2 上开发的。我正在 v2 上试用它们。以下示例代码创建了一个回归量对象。

# Create a linear regressor object. 
my_optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate) 
my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0) 
  linear_regressor = tf.estimator.LinearRegressor( 
      feature_columns=feature_columns, 
      optimizer=my_optimizer 
  ) 

我发现 tf.train.GradientDescentOptimizer 现在已移至 tf.optimizers.SGD,但无法找到 tf.contrib.estimator.clip_gradients_by_norm 的替代品。 经过一番谷歌搜索后才知道它被 tf.clip_by_norms 取代了。但是 clip by norms 将张量作为输入,而不是 clip_gradients_by_norm。

我是 tensorflow 的新手。任何帮助都将有助于弄清楚如何移植代码。

谢谢。

请您参考如下方法:

您可以通过在初始化优化器对象时设置clipnorm 参数来获得所需的功能。

optimizer = tf.optimizers.SGD(learning_rate=1e-5, clipnorm=1e-4)