为什么连在输入正确的情况下,串联会导致Keras中的形状错误?
我是Keras的新手,我对模型零件有一个代码:为什么连在输入正确的情况下,串联会导致Keras中的形状错误?,keras,concatenation,Keras,Concatenation,我是Keras的新手,我对模型零件有一个代码: # make inputs self.input_samples = Input(shape=(self.input_shape, )) self.input_labels = Input(shape=(self.nClass, )) # Encoder for samples self.E = self.encoder()(self.input_samples) # Encoder for lab
# make inputs
self.input_samples = Input(shape=(self.input_shape, ))
self.input_labels = Input(shape=(self.nClass, ))
# Encoder for samples
self.E = self.encoder()(self.input_samples)
# Encoder for labels
self.E_LBLs = self.encoder4lbls()(self.input_labels)
# Decoder for reconstruction
self.D = self.decoder()(self.E)
# Task network
task_net = self.taskOut()
self.T = task_net(self.E)
self.T_LBLS = task_net(self.E_LBLs)
# define GAN for prior matching for samples and labels
self.A = self.adversarial() # This is the discriminator for latent code matching
print(type(self.E))
self.Adv = self.A(concatenate([self.E, self.E_LBLs], axis=0)) # logits for samples and labels
self.A.compile('Adam', loss='binary_crossentropy', metrics=['acc'])
# define MMD loss
# self.merge_embeds = concatenate([self.E, self.E_LBLs], axis=0, name='mmd')
model = Model([self.input_samples, self.input_labels], [self.E, self.E_LBLs, self.Adv])
当我想使用model.predict([inouts1,inputs2])
输出self.Adv时,似乎中的concat操作连接了([self.E,self.E\u LBLs],axis=0)
。总是错的
错误消息是:
res_list = model.predict([trainSamples, trainLabels])
File "/DB/rhome/xchen/anaconda2/envs/Conda_python3_5/lib/python3.5/site-packages/keras/engine/training.py", line 1835, in predict
verbose=verbose, steps=steps)
File "/DB/rhome/xchen/anaconda2/envs/Conda_python3_5/lib/python3.5/site-packages/keras/engine/training.py", line 1339, in _predict_loop
outs[i][batch_start:batch_end] = batch_out
ValueError: could not broadcast input array from shape (64,1) into shape (32,1)
我确信self.E
和self.E\ulbls
是正确的。它们的形状分别是[N1x2000]
和[N2x2000]
你知道吗?我不能解决它
谢谢。从您的错误跟踪来看,
model.predict
似乎在抛出错误。你确定你发布了正确的错误跟踪和代码的相关部分吗?是的,我确定。我以前打印过self.E和self.E\LBLs,它们是正确的。但是,当我想进行连接操作时,它有错误。我不是说concat层,您的错误跟踪是在model.predict
处给您错误。请确保您正确地传递了[trainSamples,trainLabels]
。我认为您需要在连接后将展平
@XuChen不要问我们为什么,您提供的信息相互矛盾,我们只是解释您的回溯