def audio_bottom(x, model_hparams, vocab_size):
  """Transform input from data space to model space.

  Args:
    x: A Tensor with shape [batch, ...]
    model_hparams: HParams, model hyperparmeters.
    vocab_size: int, vocabulary size.

  Returns:
    body_input: A Tensor with shape [batch, ?, ?,
      model_hparams.hidden_size].
  """
  del vocab_size  # unused arg
  inputs = x
  with tf.variable_scope("audio_modality"):
    # TODO(aidangomez): Will need to sort out a better audio pipeline
    def xnet_resblock(x, filters, res_relu, name):
      """Xception block."""
      with tf.variable_scope(name):
        # Typically audio samples are >100k samples in length and have a width
        # of 2 or 4. Mono audio has a single channel while stereo has 2.
        y = common_layers.separable_conv_block(
            x,
            filters, [((1, 1), (3, 3)), ((1, 1), (3, 3))],
            first_relu=True,
            padding="SAME",
            force2d=True,
            name="sep_conv_block")
        y = common_layers.pool(y, (3, 3), "MAX", "SAME", strides=(2, 2))
        return y + common_layers.conv_block(
            x,
            filters, [((1, 1), (1, 1))],
            padding="SAME",
            strides=(2, 2),
            first_relu=res_relu,
            force2d=True,
            name="res_conv0")

    x = tf.to_float(inputs) / 255.
    x.set_shape([None, None, None, 1])
    for i in range(model_hparams.audio_compression):
      x = xnet_resblock(x, 2**(i + 1), True, "compress_block_%d" % i)
    return xnet_resblock(x,
                         model_hparams.hidden_size,
                         False,
                         "compress_block_final")
def audio_bottom ( x , model_hparams , vocab_size ) : del vocab_size inputs = x with tf . variable_scope ( "audio_modality" ) : def xnet_resblock ( x , filters , res_relu , name ) : with tf . variable_scope ( name ) : y = common_layers . separable_conv_block ( x , filters , [ ( ( 1 , 1 ) , ( 3 , 3 ) ) , ( ( 1 , 1 ) , ( 3 , 3 ) ) ] , first_relu = True , padding = "SAME" , force2d = True , name = "sep_conv_block" ) y = common_layers . pool ( y , ( 3 , 3 ) , "MAX" , "SAME" , strides = ( 2 , 2 ) ) return y + common_layers . conv_block ( x , filters , [ ( ( 1 , 1 ) , ( 1 , 1 ) ) ] , padding = "SAME" , strides = ( 2 , 2 ) , first_relu = res_relu , force2d = True , name = "res_conv0" ) x = tf . to_float ( inputs ) / 255. x . set_shape ( [ None , None , None , 1 ] ) for i in range ( model_hparams . audio_compression ) : x = xnet_resblock ( x , 2 ** ( i + 1 ) , True , "compress_block_%d" % i ) return xnet_resblock ( x , model_hparams . hidden_size , False , "compress_block_final" )
Transform input from data space to model space.

  Args:
    x: A Tensor with shape [batch, ...]
    model_hparams: HParams, model hyperparmeters.
    vocab_size: int, vocabulary size.

  Returns:
    body_input: A Tensor with shape [batch, ?, ?,
      model_hparams.hidden_size].