human
Here's a good function header given the following:
I wrote the below code

    input_shape = utils.get_incoming_shape(incoming)
    assert (len(input_shape) == 4), 'Incoming    Tensor    shape    must    be    4-D'
    strides = utils.autoformat_kernel_2d(strides)
    filter_size = utils.autoformat_filter_conv2d(kernel_size, num_classes, input_shape[(-1)])
    with tf.variable_scope(scope, default_name=name, values=[incoming], reuse=reuse) as scope:
        name = scope.name
        if (shape is None):
            in_shape = tf.shape(incoming)
            h = (((in_shape[1] - 1) * strides[1]) + 1)
            w = (((in_shape[2] - 1) * strides[1]) + 1)
            new_shape = [in_shape[0], h, w, num_classes]
        else:
            new_shape = [shape[0], shape[1], shape[2], num_classes]
        output_shape = tf.stack(new_shape)
        def get_deconv_filter(f_shape):
            '\n                                                Create    filter    weights    initialized    as    bilinear    upsampling.\n                                                '
            width = f_shape[0]
            heigh = f_shape[0]
            f = ceil((width / 2.0))
            c = ((((2 * f) - 1) - (f % 2)) / (2.0 * f))
            bilinear = np.zeros([f_shape[0], f_shape[1]])
            for x in range(width):
                for y in range(heigh):
                    value = ((1 - abs(((x / f) - c))) * (1 - abs(((y / f) - c))))
                    bilinear[(x, y)] = value
            weights = np.zeros(f_shape)
            for i in range(f_shape[2]):
                weights[:, :, i, i] = bilinear
            init = tf.constant_initializer(value=weights, dtype=tf.float32)
            W = vs.variable(name='up_filter', initializer=init, shape=weights.shape, trainable=trainable, restore=restore)
            tf.add_to_collection(((tf.GraphKeys.LAYER_VARIABLES + '/') + name), W)
            return W
        weights = get_deconv_filter(filter_size)
        deconv = tf.nn.conv2d_transpose(incoming, weights, output_shape, strides=strides, padding='SAME')
    deconv.scope = scope
   ...

What's a good function header?
assistant
#Here's a good function header.

def upscore_layer(incoming, num_classes, shape=None, kernel_size=4, strides=2, trainable=True, restore=True, reuse=False, scope=None, name='Upscore'):