Зачем объединять причину ошибки формы в Keras, даже если входные данные верны? - PullRequest
0 голосов
/ 08 января 2020

Я новичок в 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])

Когда я хочу вывести self.Adv с помощью model.predict([inouts1, inputs2]), кажется, что операция concat в concatenate([self.E, self.E_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_LBLs верны. И их формы [N1x2000] и [N2x2000] соответственно.

У вас есть идеи? Я не могу решить это.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...