code: def shake_shake_block(x, output_filters, stride, hparams):
      """Builds a full shake-shake sub layer."""
      is_training = hparams.mode == tf_estimator.ModeKeys.TRAIN
      batch_size = common_layers.shape_list(x)[0]
  
      # Generate random numbers for scaling the branches.
      rand_forward = [
          tf.random_uniform(
              [batch_size, 1, 1, 1],
              minval=0,
              maxval=1,
              dtype=tf.float32,
          )
          for _ in range(hparams.shake_shake_num_branches)
      ]
      rand_backward = [
          tf.random_uniform(
              [batch_size, 1, 1, 1],
              minval=0,
              maxval=1,
              dtype=tf.float32,
          )
          for _ in range(hparams.shake_shake_num_branches)
      ]
      # Normalize so that all sum to 1.
      total_forward = tf.add_n(rand_forward)
      total_backward = tf.add_n(rand_backward)
      rand_forward = [samp / total_forward for samp in rand_forward]
      rand_backward = [samp / total_backward for samp in rand_backward]
      zipped_rand = zip(rand_forward, rand_backward)
  
      branches = []
      for branch, (r_forward, r_backward) in enumerate(zipped_rand):
          with tf.variable_scope("branch_{}".format(branch)):
              b = shake_shake_branch(
                  x,
                  output_filters,
                  stride,
                  r_forward,
                  r_backward,
                  hparams,
              )
              b = tf.nn.dropout(
                  b, 1.0 - hparams.layer_prepostprocess_dropout
              )
              branches.append(b)
      res = shake_shake_skip_connection(
          x, output_filters, stride, is_training
      )
      if hparams.shake_shake_concat:
          concat_values = [res] + branches
          concat_output = tf.concat(values=concat_values, axis=-1)
          concat_output = tf.nn.relu(concat_output)
          concat_output = tf.layers.conv2d(
              concat_output, output_filters, (1, 1), name="concat_1x1"
          )
          concat_output = tf.layers.batch_normalization(
              concat_output, training=is_training, name="concat_bn"
          )
          return concat_output
      else:
          return res + tf.add_n(branches)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from tensor2tensor.layers import common_hparams
  from tensor2tensor.layers import common_layers
  from tensor2tensor.utils import hparam
  from tensor2tensor.utils import registry
  from tensor2tensor.utils import t2t_model
  import tensorflow.compat.v1
  from tensorflow.compat.v1 import estimator
label_desc: Use image node_id 3 for calling a global function with example usage: shake_shake_block(x, output_filters, stride, hparams) and returns: concat_output, unknown