Эта реализация VQ-VAE для аудио неверна? - PullRequest
0 голосов
/ 23 апреля 2019

Я надеялся найти документ с открытым исходным кодом учебного документа по нейронному дискретному представлению для аудио.Я смотрю на этот репозиторий github .В документе говорится, что «кодировщик имеет 6 ступенчатых сверток с шагом 2 и размером окна 4».Код Джереми для кодировщика:

 def _encoder(self, x):
'''
Note that we need a pair of reversal to ensure causality.
(i.e. no trailing pads)
`x`: [b, T, c]
'''
k_init = self.arch['initial_filter_width']

b = tf.shape(x)[0]
o = tf.zeros([b, k_init - 1, self.arch['dim_symbol_emb']])
x = tf.concat([o, x], 1)

k_init = self.arch['initial_filter_width']
x = tf.layers.conv1d(
  inputs=x,
  filters=self.arch['residual_channels'],
  kernel_size=k_init,
  kernel_regularizer=tf.keras.regularizers.l2(WEIGHT_DECAY),
  name='initial_filtering',
  kernel_initializer=tf.initializers.variance_scaling(
    scale=1.43,
    distribution='uniform'),
)
x = tf.nn.leaky_relu(x, 2e-2)

x = tf.reverse(x, [1])  # paired op to enforce causality
for i in range(self.arch['n_downsample_stack']):
  conv = tf.layers.conv1d(
    inputs=x,
    filters=(i + 1) * self.arch['encoder']['filters'],
    kernel_size=self.arch['encoder']['kernels'],
    strides=2,
    padding='same',
    # activation=tf.nn.tanh,
    kernel_initializer=tf.initializers.variance_scaling(
      scale=1.15,
      distribution='uniform'),
    kernel_regularizer=tf.keras.regularizers.l2(WEIGHT_DECAY),
  )
  gate = tf.layers.conv1d(
    inputs=x,
    filters=(i + 1) * self.arch['encoder']['filters'],
    kernel_size=self.arch['encoder']['kernels'],
    strides=2,
    padding='same',
    # activation=tf.nn.sigmoid,
    kernel_initializer=tf.initializers.variance_scaling(distribution='uniform'),
    kernel_regularizer=tf.keras.regularizers.l2(WEIGHT_DECAY),
    bias_initializer=tf.initializers.ones,
  )
  x = tf.nn.tanh(conv) * tf.nn.sigmoid(gate)
x = tf.reverse(x, [1])  # paired op to enforce causality

x = tf.layers.conv1d(
  inputs=x,
  filters=self.arch['dim_exemplar'],
  kernel_size=1,
  kernel_initializer=tf.initializers.variance_scaling(
      distribution='uniform'),
  kernel_regularizer=tf.keras.regularizers.l2(WEIGHT_DECAY),
)
return x

Этот кодировщик имеет 1 + arch ['n_downsample_stack'] + 1 = 8 слоев свертки, в то время как в статье сказано 6, kernel_sizes являются arch ['initial_filter_width'] = 32, arch ['encoder'] ['kernels'] = 5, 5, 5, 5, 5, 5, 1, в то время как в статье говорится 4, и в статье не упоминаются какие-либо элементы в кодировщике.

Я неправильно понимаю код, неправильно понимаю документ или код реализует архитектуру, отличную от описанной в статье?Есть ли где-нибудь рабочая реализация статьи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...