keras中的断言错误

时间:2017-02-19 02:37:02

标签: keras keras-layer

我正在尝试在keras中编写一个GAN,但是在运行它时我遇到了这个断言错误。搜索后我发现问题的最可能原因是旧版本theano。我将theano更新为最新的github开发版 0.9.0beta1 ,但我仍然遇到同样的错误。

INDEX(date)

问题发生在本节from keras.models import Sequential from keras.layers import Dense, Activation, Dropout from keras.optimizers import SGD print "Setting up decoder" D = Sequential() D.add(Dense(100, input_dim=100, activation='relu')) D.add(Dropout(0.5)) D.add(Dense(50, activation='relu')) D.add(Dropout(0.5)) D.add(Dense(1, activation='sigmoid')) sgd = SGD(lr=0.01, momentum=0.1) D.compile(loss='binary_crossentropy', optimizer=sgd) print "Setting up generator" G = Sequential() G.add(Dense(1, input_dim=1, activation='relu')) G.add(Dropout(0.5)) G.add(Dense(50, activation='relu')) G.add(Dropout(0.5)) G.add(Dense(1, activation='sigmoid')) sgd = SGD(lr=0.01, momentum=0.1) G.compile(loss='binary_crossentropy', optimizer=sgd) print "Setting up combined net" gen_dec = Sequential() gen_dec.add(G) D.trainable=False gen_dec.add(D) gen_dec.compile(loss='binary_crossentropy', optimizer=sgd) gen_dec.summary()

gen_dec.add(D)

1 个答案:

答案 0 :(得分:1)

我认为这是代码中的拼写错误...请更改生成器的最后一层:

G.add(Dense(1, activation='sigmoid'))

为:

G.add(Dense(100, activation='sigmoid'))

我猜你不希望你的发生器只生成1个像素,因为你的鉴别器需要100个输入。

错误来自于您的第一个模型输出形状为(batch_size, 1)的张量,而您的第二个模型输入的输入形状为(batch_size, 100)。因此断言错误。

现在正在我的笔记本电脑上编译。