Voy a completar el curso de Aprendizaje automático de Google Developers. Los ejemplos dados se desarrollan en TensorFlow <2. Los estoy probando en v2. El siguiente código de ejemplos crea un objeto regresor.

# 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
  )

Pude encontrar que tf.train.GradientDescentOptimizer ahora se mueve a tf.optimizers.SGD pero no puedo encontrar un reemplazo para tf.contrib.estimator.clip_gradients_by_norm. Después de buscar un poco en Google, me di cuenta de que está reemplazado por tf.clip_by_norms. Pero clip por normas toma el tensor como entrada en lugar de clip_gradients_by_norm.

Soy nuevo en tensorflow. Se agradecería cualquier ayuda para descubrir cómo portar el código.

Gracias.

3
Darshan Parab 14 oct. 2019 a las 08:54

1 respuesta

La mejor respuesta

Puede obtener la funcionalidad requerida configurando el argumento clipnorm mientras inicializa el objeto optimizador.

optimizer = tf.optimizers.SGD(learning_rate=1e-5, clipnorm=1e-4)
2
Srihari Humbarwadi 14 oct. 2019 a las 10:36