在stargan-vc模型中,有比较经典的(卷积 & 反卷积)组合,综合参考了github上的implement代码https://github.com/hujinsen/StarGAN-Voice-Conversion
其中,编码者,在Generator部分,采用手动padding,之后采用
def conv2d_layer(inputs, filters, kernel_size, strides, padding: list = None, activation=None, kernel_initializer=None, name=None):
p = tf.constant([[0, 0], [padding[0], padding[0]], [padding[1], padding[1]], [0, 0]])
out = tf.pad(inputs, p, name=name + 'conv2d_pad')
"""关于tf.pad 的用法:
# https://blog.csdn.net/yy_diego/article/details/81563160"""
conv_layer = tf.layers.conv2d(
inputs=out,
filters=filters,
kernel_size=kernel_size,
strides=strides,
padding='valid',
activation=activation,
kernel_initializer=kernel_initializer,
name=name)
return conv_layer
来作为下采样卷积的函数;
仔细想来,其实也可以直接用 (‘SAME’模式)代替(‘VALID’+手动padding) 的方法,总的目标都是改变卷积尺寸,数据是一样的;
在查阅相关资料的时候(关于卷积&反卷积 尺寸计算的公式),做了一些笔记和整理:
卷积尺寸公式:https://blog.csdn.net/weixin_37697191/article/details