Разница между tf.nn.conv2d_transpose и slim.conv2d_transpose - PullRequest
0 голосов
/ 07 декабря 2018

В чем разница между этими двумя функциями в Tensorflow

tf.nn.conv2d_transpose(
    value,
    filter,
    output_shape,
    strides,
    padding='SAME',
    data_format='NHWC',
    name=None
)

Это полное определение в tf.nn.conv2d_transpose slim.conv2d_transpose определяется следующим образом:

tf.layers.conv2d_transpose(
    inputs,
    filters,
    kernel_size,
    strides=(1, 1),
    padding='valid',
    data_format='channels_last',
    activation=None,
    use_bias=True,
    kernel_initializer=None,
    bias_initializer=tf.zeros_initializer(),
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    kernel_constraint=None,
    bias_constraint=None,
    trainable=True,
    name=None,
    reuse=None
)

полное определение в slim.conv2d_transpose

как мне определить выходную форму в slim.conv2d_transpose

1 Ответ

0 голосов
/ 19 августа 2019

Между ними есть существенная разница.В то время как tf.nn.conv2d_transpose представляет операцию в графе вычислений, tf.layers.conv2d_transpose определяет весь слой.

Если быть более точным, tf.nn.conv2d_transpose применяет сверточный filter к inputs.

tf.layers.conv2d_transpose, с другой стороны, сначала создает обучаемые переменные, которые будут служить filterв соответствии с приведенными аргументами, а затем он вызывает внутреннюю операцию conv2d_transpose.Основываясь на аргументах, он также применяет некоторые другие операции, такие как добавление смещения, применение нелинейности или нормализацию весов или входных данных.

С tf.layers.conv2d_transpose вы не указываете output shape, поскольку оно вычисляется из фильтраразмер, размер ввода и шаг. Здесь - формула.

...