code: def conv_hidden_relu(inputs,
                       hidden_size,
                       output_size,
                       kernel_size=(1, 1),
                       second_kernel_size=(1, 1),
                       dropout=0.0,
                       **kwargs):
    
    name = kwargs.pop("name") if "name" in kwargs else None
    with tf.variable_scope(name, "conv_hidden_relu", [inputs]):
      if inputs.get_shape().ndims == 3:
        is_3d = True
        inputs = tf.expand_dims(inputs, 2)
      else:
        is_3d = False
      conv_f1 = conv if kernel_size == (1, 1) else separable_conv
      h = conv_f1(
          inputs,
          hidden_size,
          kernel_size,
          activation=tf.nn.relu,
          name="conv1",
          **kwargs)
      if dropout != 0.0:
        h = tf.nn.dropout(h, 1.0 - dropout)
      conv_f2 = conv if second_kernel_size == (1, 1) else separable_conv
      ret = conv_f2(h, output_size, second_kernel_size, name="conv2", **kwargs)
      if is_3d:
        ret = tf.squeeze(ret, 2)
      return ret
docs: Hidden layer with RELU activation followed by linear projection.