Мои наборы данных - это аудиоданные, и я попытался обучить модель cycleGAN, чтобы попрактиковаться в передаче стиля. формат данных .npy
. Но когда я запускаю код. Я получил ValueError:
Выходные тензоры для модели должны быть выходными данными TensorFlow Layer
(таким образом, удерживая метаданные прошлого слоя). Найдено: Тензор ("Reshape: 0", shape = (?, 2), dtype = float32).
Код:
def build_discriminator_classifier(options, name='Discriminator_Classifier'):
initializer = tf.random_normal_initializer(0., 0.02)
inputs = Input(shape=(options.time_step,
options.pitch_range,
options.output_nc))
x = inputs
# (batch * 64, 84, 1)
x = layers.Conv2D(filters=options.df_dim,
kernel_size=[1, 12],
strides=[1, 12],
padding='same',
kernel_initializer=initializer,
use_bias=False,
name='CONV2D_1')(x)
x = layers.LeakyReLU(alpha=0.2)(x)
# (batch * 64 * 7 * 64)
x = layers.Conv2D(filters=options.df_dim * 2,
kernel_size=[4, 1],
strides=[4, 1],
padding='same',
kernel_initializer=initializer,
use_bias=False,
name='CONV2D_2')(x)
x = layers.Lambda(instance_norm,
name='IN_1')(x)
x = layers.LeakyReLU(alpha=0.2)(x)
# (batch * 16 * 7 * 128)
x = layers.Conv2D(filters=options.df_dim * 4,
kernel_size=[2, 1],
strides=[2, 1],
padding='same',
kernel_initializer=initializer,
use_bias=False,
name='CONV2D_3')(x)
x = layers.Lambda(instance_norm,
name='IN_2')(x)
x = layers.LeakyReLU(alpha=0.2)(x)
# (batch * 8 * 7 * 256)
x = layers.Conv2D(filters=options.df_dim * 8,
kernel_size=[8, 1],
strides=[8, 1],
padding='same',
kernel_initializer=initializer,
use_bias=False,
name='CONV2D_4')(x)
x = layers.Lambda(instance_norm,
name='IN_3')(x)
x = layers.LeakyReLU(alpha=0.2)(x)
# (batch * 1 * 7 * 512)
x = layers.Conv2D(filters=2,
kernel_size=[1, 7],
strides=[1, 7],
padding='same',
kernel_initializer=initializer,
use_bias=False,
name='CONV2D_5')(x)
# (batch * 1 * 1 * 2)
x = tf.reshape(x, [-1, 2])
# (batch * 2)
outputs = x
return Model(inputs=inputs,
outputs=outputs,
name=name)