为什么连在输入正确的情况下,串联会导致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

我是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 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不要问我们为什么,您提供的信息相互矛盾,我们只是解释您的回溯