A wrapper around `tf.layers.Conv2DTranspose`. Some differences to maintain backward-compatibility: 1. Default kernel initializer is variance_scaling_initializer(2.0). 2. Default padding is 'same' Variable Names: * ``W``: weights * ``b``: bias
(
inputs,
filters,
kernel_size,
strides=(1, 1),
padding='same',
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)
| 150 | 'stride': 'strides', |
| 151 | }) |
| 152 | def Conv2DTranspose( |
| 153 | inputs, |
| 154 | filters, |
| 155 | kernel_size, |
| 156 | strides=(1, 1), |
| 157 | padding='same', |
| 158 | data_format='channels_last', |
| 159 | activation=None, |
| 160 | use_bias=True, |
| 161 | kernel_initializer=None, |
| 162 | bias_initializer=tf.zeros_initializer(), |
| 163 | kernel_regularizer=None, |
| 164 | bias_regularizer=None, |
| 165 | activity_regularizer=None): |
| 166 | """ |
| 167 | A wrapper around `tf.layers.Conv2DTranspose`. |
| 168 | Some differences to maintain backward-compatibility: |
| 169 | |
| 170 | 1. Default kernel initializer is variance_scaling_initializer(2.0). |
| 171 | 2. Default padding is 'same' |
| 172 | |
| 173 | Variable Names: |
| 174 | |
| 175 | * ``W``: weights |
| 176 | * ``b``: bias |
| 177 | """ |
| 178 | if kernel_initializer is None: |
| 179 | if get_tf_version_tuple() <= (1, 12): |
| 180 | kernel_initializer = tf.contrib.layers.variance_scaling_initializer(2.0) # deprecated |
| 181 | else: |
| 182 | kernel_initializer = tf.keras.initializers.VarianceScaling(2.0, distribution='untruncated_normal') |
| 183 | |
| 184 | if get_tf_version_tuple() <= (1, 12): |
| 185 | with rename_get_variable({'kernel': 'W', 'bias': 'b'}): |
| 186 | layer = tf.layers.Conv2DTranspose( |
| 187 | filters, |
| 188 | kernel_size, |
| 189 | strides=strides, |
| 190 | padding=padding, |
| 191 | data_format=data_format, |
| 192 | activation=activation, |
| 193 | use_bias=use_bias, |
| 194 | kernel_initializer=kernel_initializer, |
| 195 | bias_initializer=bias_initializer, |
| 196 | kernel_regularizer=kernel_regularizer, |
| 197 | bias_regularizer=bias_regularizer, |
| 198 | activity_regularizer=activity_regularizer, |
| 199 | _reuse=tf.get_variable_scope().reuse) |
| 200 | ret = layer.apply(inputs, scope=tf.get_variable_scope()) |
| 201 | ret = tf.identity(ret, name='output') |
| 202 | ret.variables = VariableHolder(W=layer.kernel) |
| 203 | if use_bias: |
| 204 | ret.variables.b = layer.bias |
| 205 | else: |
| 206 | # Our own implementation, to avoid Keras bugs. https://github.com/tensorflow/tensorflow/issues/25946 |
| 207 | assert kernel_regularizer is None and bias_regularizer is None and activity_regularizer is None, \ |
| 208 | "Unsupported arguments due to Keras bug in TensorFlow 1.13" |
| 209 | data_format = get_data_format(data_format, keras_mode=False) |