我的数据集是音频数据,我尝试训练一个cycleGAN模型来练习样式转换。数据格式为.npy
。但是当我启动代码时。我收到了ValueError:
模型的输出张量必须是TensorFlow
Layer
的输出 (因此保存过去的图层元数据)。找到:Tensor(“ 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)