Considerando el código de ejemplo .
Me gustaría saber cómo aplicar el recorte de gradiente en esta red en el RNN donde existe la posibilidad de explosiones de gradientes.
tf.clip_by_value(t, clip_value_min, clip_value_max, name=None)
Este es un ejemplo que podría usarse, pero ¿dónde lo introduzco? En la def de RNN
lstm_cell = rnn_cell.BasicLSTMCell(n_hidden, forget_bias=1.0)
# Split data because rnn cell needs a list of inputs for the RNN inner loop
_X = tf.split(0, n_steps, _X) # n_steps
tf.clip_by_value(_X, -1, 1, name=None)
Pero esto no tiene sentido ya que el tensor _X es la entrada y no el grad. ¿Qué se va a recortar?
¿Tengo que definir mi propio Optimizador para esto o hay una opción más simple?
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)
y luego se realiza una iteración del optimizador como,optimizer.run()
pero el usooptimizer.run()
no parece funcionar en este caso.