(layers, d_model, n_layers, forget_dense=True)
return tl.Serial(
      tl.ReversibleSerial(layers1),
      forgetting_layer,
      _ReversibleSerialForget(layers2, d_model, n_layers, forget_dense)
  )
ReversibleSerial but with a forgetting block every n_layers.
ReversibleSerial but with a forgetting block every n_layers.
ReversibleSerial but with a forgetting block every n_layers .
def _ReversibleSerialForget(layers, d_model, n_layers, forget_dense=True):
  """ReversibleSerial but with a forgetting block every n_layers."""
  if not n_layers or len(layers) <= n_layers + 1:
    return tl.ReversibleSerial(layers)
  layers1, layers2 = layers[:n_layers], layers[n_layers:]

  if forget_dense:
    forgetting_layer = tl.Serial(
        _XYAvg(),
        tl.Dense(d_model),
        tl.Dup(),
    )
  else:
    forgetting_layer = tl.Select([0, 1])

  return tl.Serial(
      tl.ReversibleSerial(layers1),
      forgetting_layer,
      _ReversibleSerialForget(layers2, d_model, n_layers, forget_dense)
  )
def _ReversibleSerialForget ( layers , d_model , n_layers , forget_dense = True ) : if not n_layers or len ( layers ) <= n_layers + 1 : return tl . ReversibleSerial ( layers ) layers1 , layers2 = layers [ : n_layers ] , layers [ n_layers : ] if forget_dense : forgetting_layer = tl . Serial ( _XYAvg ( ) , tl . Dense ( d_model ) , tl . Dup ( ) , ) else : forgetting_layer = tl . Select ( [ 0 , 1 ] ) return tl . Serial ( tl . ReversibleSerial ( layers1 ) , forgetting_layer , _ReversibleSerialForget ( layers2 , d_model , n_layers , forget_dense ) )