def l2_normalize(x, dim, epsilon=1e-12, name=None):
    'Normalizes along dimension `dim` using an L2 norm.\n\n  For a 1-D tensor with `dim = 0`, computes\n\n      output = x / sqrt(max(sum(x**2), epsilon))\n\n  For `x` with more dimensions, independently normalizes each 1-D slice along\n  dimension `dim`.\n\n  Args:\n    x: A `Tensor`.\n    dim: Dimension along which to normalize.\n    epsilon: A lower bound value for the norm. Will use `sqrt(epsilon)` as the\n      divisor if `norm < sqrt(epsilon)`.\n    name: A name for this operation (optional).\n\n  Returns:\n    A `Tensor` with the same shape as `x`.\n  '
    with ops.op_scope([x], name, 'l2_normalize') as name:
        x = ops.convert_to_tensor(x, name='x')
        square_sum = math_ops.reduce_sum(math_ops.square(x), [dim], keep_dims=True)
        x_inv_norm = math_ops.rsqrt(math_ops.maximum(square_sum, epsilon))
        return math_ops.mul(x, x_inv_norm, name=name)
Normalizes along dimension `dim` using an L2 norm.

For a 1-D tensor with `dim = 0`, computes

    output = x / sqrt(max(sum(x**2), epsilon))

For `x` with more dimensions, independently normalizes each 1-D slice along
dimension `dim`.

Args:
  x: A `Tensor`.
  dim: Dimension along which to normalize.
  epsilon: A lower bound value for the norm. Will use `sqrt(epsilon)` as the
    divisor if `norm < sqrt(epsilon)`.
  name: A name for this operation (optional).

Returns:
  A `Tensor` with the same shape as `x`.
def l2_normalize(x, dim, epsilon=1e-12, name=None):
    'Normalizes along dimension `dim` using an L2 norm.\n\n  For a 1-D tensor with `dim = 0`, computes\n\n      output = x / sqrt(max(sum(x**2), epsilon))\n\n  For `x` with more dimensions, independently normalizes each 1-D slice along\n  dimension `dim`.\n\n  Args:\n    x: A `Tensor`.\n    dim: Dimension along which to normalize.\n    epsilon: A lower bound value for the norm. Will use `sqrt(epsilon)` as the\n      divisor if `norm < sqrt(epsilon)`.\n    name: A name for this operation (optional).\n\n  Returns:\n    A `Tensor` with the same shape as `x`.\n  '
    with ops.op_scope([x], name, 'l2_normalize') as name:
        x = ops.convert_to_tensor(x, name='x')
        square_sum = math_ops.reduce_sum(math_ops.square(x), [dim], keep_dims=True)
        x_inv_norm = math_ops.rsqrt(math_ops.maximum(square_sum, epsilon))
        return math_ops.mul(x, x_inv_norm, name=name)