code: def erase_rows(memory, address, reset_row_weights):
      """Erases rows over addressing distribution by given reset weight.
  
      The reset row weight here is uniform over the values in a word.
  
      Args:
        memory: 3D Tensor [batch_size, memory_size, word_size].
        address: 3D Tensor [batch_size, num_writes, memory_size].
        reset_row_weights: 2D Tensor [batch_size, num_writes].
  
      Returns:
        3d Tensor of memory [batch_size, memory_size, word_size].
      """
  
      with tf.name_scope("erase_rows"):
          # Expands reset_row_weights for broadcasted cmul with address.
          reset_row_weights = tf.expand_dims(reset_row_weights, -1)
          weighted_resets = tf.multiply(address, reset_row_weights)
          reset_gate = tf.reduce_prod(1 - weighted_resets, axis=[1])
          # Expands reset_gate for broadcasted cmul with memory.
          reset_gate = tf.expand_dims(reset_gate, -1)
          return tf.multiply(memory, reset_gate)
  
imports: import tensorflow
label_desc: Use image node_id 3 for calling a global function with example usage: erase_rows(memory, address, reset_row_weights) and returns: tf