用nn的操作实现layers的操作
def deconv(x, cnum, kernel_size = 3, scale_size = 2,stride = 2, name='upsample', padding='SAME', ):
b, w, h, c = x.shape[0], x.shape[1], x.shape[2], x.shape[3]
b, w, h, c = int(b), int(w), int(h), int(c)
with tf.variable_scope(name, reuse=tf.AUTO_REUSE):
weight = tf.get_variable('conv2d_transpose/kernel', [kernel_size, kernel_size, cnum, c], tf.float32)
bias = tf.get_variable('conv2d_transpose/bias', [cnum], tf.float32)
data = tf.nn.conv2d_transpose(x, weight , [b, scale_size*w, scale_size*h, c], [1, stride, stride, 1], padding)
data = tf.nn.bias_add(data, bias)
data = tf.sigmoid(data)
return data
上面的代码等价于
tf.layers.conv2d_transpose()