code: def soft_round(x, alpha, eps=1e-3):
      """Differentiable approximation to `round`.
  
      Larger alphas correspond to closer approximations of the round function.
      If alpha is close to zero, this function reduces to the identity.
  
      This is described in Sec. 4.1. in the paper
      > "Universally Quantized Neural Compression"<br />
      > Eirikur Agustsson & Lucas Theis<br />
      > https://arxiv.org/abs/2006.09952
  
      Args:
        x: `tf.Tensor`. Inputs to the rounding function.
        alpha: Float or `tf.Tensor`. Controls smoothness of the approximation.
        eps: Float. Threshold below which `soft_round` will return identity.
  
      Returns:
        `tf.Tensor`
      """
      # This guards the gradient of tf.where below against NaNs, while maintaining
      # correctness, as for alpha < eps the result is ignored.
      alpha_bounded = tf.maximum(alpha, eps)
  
      m = tf.floor(x) + 0.5
      r = x - m
      z = tf.tanh(alpha_bounded / 2.0) * 2.0
      y = m + tf.tanh(alpha_bounded * r) / z
  
      # For very low alphas, soft_round behaves like identity
      return tf.where(alpha < eps, x, y, name="soft_round")
  
imports: import tensorflow
label_desc: Use image node_id 4 for calling a global function with example usage: soft_round(x, alpha, eps) and returns: tf