code: def _address_content(self, x):
      
      mem_keys = tf.layers.dense(self.mem_vals, self.key_depth,
                                 bias_initializer=tf.constant_initializer(1.0),
                                 name="mem_key")
      mem_query = tf.layers.dense(x, self.key_depth,
                                  bias_initializer=tf.constant_initializer(1.0),
                                  name="mem_query")
      norm = tf.matmul(self._norm(mem_query), self._norm(mem_keys),
                       transpose_b=True)
      dot_product = tf.matmul(mem_query, mem_keys, transpose_b=True)
      cos_dist = tf.div(dot_product, norm + 1e-7, name="cos_dist")
      access_logits = self.sharpen_factor * cos_dist
      return access_logits
docs: Address the memory based on content similarity.
  
      Args:
        x: a tensor in the shape of [batch_size, length, depth].
      Returns:
        the logits for each memory entry [batch_size, length, memory_size].