Python Keras、GAN模型中的断言错误

Python Keras、GAN模型中的断言错误,python,machine-learning,tensorflow,keras,Python,Machine Learning,Tensorflow,Keras,我正试图基于jacob的代码()构建一个条件GAN模型。但是,当模型编译时,包含鉴别器模型的生成器抛出断言错误 我认为这可能与生成器和鉴别器模型中的多个输入和输出有关;keras不喜欢我尝试将这两种模型结合起来 基本上,我希望生成器接受两个输入:g_输入和辅助_输入,并产生两个输出:T和辅助_输入。在这种情况下,我只是简单地传递辅助输入 我希望鉴别器接受两个输入:d_输入和辅助_输入,并产生一个输出:T 我确保大小匹配,但你们知道为什么当我编译包含鉴别器的生成器时,这仍然不起作用吗?非常感谢您的

我正试图基于jacob的代码()构建一个条件GAN模型。但是,当模型编译时,包含鉴别器模型的生成器抛出断言错误

我认为这可能与生成器和鉴别器模型中的多个输入和输出有关;keras不喜欢我尝试将这两种模型结合起来

基本上,我希望生成器接受两个输入:g_输入和辅助_输入,并产生两个输出:T和辅助_输入。在这种情况下,我只是简单地传递辅助输入

我希望鉴别器接受两个输入:d_输入和辅助_输入,并产生一个输出:T

我确保大小匹配,但你们知道为什么当我编译包含鉴别器的生成器时,这仍然不起作用吗?非常感谢您的帮助

我的代码:

import warnings
warnings.filterwarnings('ignore')

from keras import backend as K
from keras.layers import Dense, Input
from keras.layers import Reshape, concatenate
from keras.layers.core import Activation
from keras.models import Model
from keras.layers.normalization import BatchNormalization
from keras.layers.convolutional import UpSampling2D
from keras.layers.convolutional import Convolution2D, MaxPooling2D
from keras.layers.core import Flatten
K.set_image_dim_ordering('th')


#g_inputs is the input for generator
#auxiliary_input is the condition
#d_inputs is the input for discriminator
g_inputs = (Input(shape=(110,), dtype='float32', name='g_inputs'))
auxiliary_input = (Input(shape=(10,), dtype='float32', name='auxiliary_input'))
d_inputs = (Input(shape=(1,28,28), dtype='float32', name='d_inputs'))


def generator_model():
    T = (Dense(1024))(g_inputs)
    T = (Dense(128*7*7))(T)
    T = (BatchNormalization())(T)
    T = (Activation('tanh'))(T)
    T = (Reshape((128, 7, 7), input_shape=(128*7*7,)))(T)
    T = (UpSampling2D(size=(2, 2)))(T)
    T = (Convolution2D(64, 5, 5, border_mode='same'))(T)
    T = (BatchNormalization())(T)
    T = (Activation('tanh'))(T)
    T = (UpSampling2D(size=(2, 2)))(T)
    T = (Convolution2D(1, 5, 5, border_mode='same'))(T)
    T = (BatchNormalization())(T)
    T = (Activation('tanh'))(T)
    model = Model(input=[g_inputs, auxiliary_input], output=[T,auxiliary_input])
    return model

def discriminator_model():
    T = (Convolution2D(filters= 64, kernel_size= (5,5), padding='same'))(d_inputs)
    T = (BatchNormalization())(T)
    T = (Activation('tanh'))(T)
    T = (MaxPooling2D(pool_size=(2, 2)))(T)
    T = (Convolution2D(128, 5, 5))(T)
    T = (BatchNormalization())(T)
    T = (Activation('tanh'))(T)
    T = (MaxPooling2D(pool_size=(2, 2)))(T)
    T = (Flatten())(T)
    T = concatenate([T, auxiliary_input])
    T = (Dense(1024))(T)
    T = (Activation('tanh'))(T)
    T = (Dense(1))(T)
    T = (Activation('sigmoid'))(T)
    model = Model(input=[d_inputs,auxiliary_input], output=T)
    return model

def generator_containing_discriminator(generator, discriminator):
    T1 = generator([g_inputs, auxiliary_input])
    discriminator.trainable = False
    T2 = discriminator(T1)
    model = Model(input=[g_inputs, auxiliary_input], output=T2)
    return model



discriminator = discriminator_model()
generator = generator_model()


generator_containing_discriminator(generator, discriminator).summary()

错误是什么?我想问题出在发电机上。它根本不使用“辅助输入”。是描述符做的。您好,您好,您是对的,我通过简单地从生成器中删除辅助输入来修复它,谢谢您的回答!错误是什么?我想问题出在发电机上。它根本不使用“辅助输入”。是描述符做的。您好,您好,您是对的,我通过简单地从生成器中删除辅助输入来修复它,谢谢您的回答!