ValueError: невозможно преобразовать массив размером 235000 в форму (100,64,64,2350)

Я пытаюсь реализовать cDCGAN. В моем наборе данных 2350 num_classes, batch_size - 100, размер изображения - 64 (rows = 64, cols = 64, channels = 1), z_shape - 100 Мои заполнители для значений следующие.

    self.phX = tf.placeholder(tf.float32, [None, self.rows, self.cols, self.channels])
    self.phZ = tf.placeholder(tf.float32, [None, self.z_shape])
    self.phY_g = tf.placeholder(tf.float32, [None, self.num_classes])
    self.phY_d = tf.placeholder(tf.float32, shape=(None, self.rows, self.cols, self.num_classes))

Я загружаю пакет изображений, noise_Z и метки (одна горячая кодировка) для phY_g и phY_d в цикле обучения, как показано ниже.

# Get a random batch of images and labels. This gives 100 images of shape [100,4096] and 100 labels of shape [100,2350]
train_images, train_labels = self.sess.run([self.image_batch, self.label_batch])

# Real image input for Real Discriminator,
# Reshape images to pass to D
batch_X = train_images.reshape((self.batch_size, self.rows, self.cols, self.channels))
batch_X = batch_X * 2 - 1

# Z noise for Generator
batch_Z = np.random.uniform(-1, 1, (self.batch_size, self.z_shape)) # Shape is [?, 100]

# Label input for Generator
batch_Y_g = train_labels
batch_Y_g = batch_Y_g.reshape([self.batch_size, self.num_classes])

# Label input for Discriminator
batch_Y_d = train_labels
batch_Y_d = batch_Y_d.reshape([self.batch_size, self.rows, self.cols, self.num_classes])

Все работает хорошо, но для batch_Y_d я получаю сообщение об ошибке «ValueError: невозможно преобразовать массив размером 235000 в форму (100,64,64,2350)»

Как я могу изменить его в соответствии с моей формой заполнителя?


person Ammar Ul Hassan    schedule 07.03.2019    source источник
comment
Форма batch_Y_d (100,2350) равна train_labels. Его нельзя изменить на (100,64,64,2350).   -  person giser_yugang    schedule 08.03.2019
comment
@giser_yugang Итак, чем мне нужно манипулировать, чтобы заставить его работать. Мне нужно изменить форму заполнителя?   -  person Ammar Ul Hassan    schedule 08.03.2019
comment
Я не знаю, в чем смысл self.phY_d. Если нужно кормить batch_Y_d, нужно это изменить.   -  person giser_yugang    schedule 08.03.2019
comment
Заполнитель @giser_yugang self.phY_d принимает пакет значений меток для моего дискриминатора. А в функции Discriminator он использует tf.concat () для объединения реального пакета изображений (self.phX) и (self.phY_d).   -  person Ammar Ul Hassan    schedule 08.03.2019


Ответы (1)


Вы не должны изменять self.phY_d, и вам нужно изменить batch_Y_d, как показано в cDCGAN.

batch_Y_d = train_labels
batch_Y_d = batch_Y_d.reshape([self.batch_size,1,1,self.num_classes])
batch_Y_d = batch_Y_d * np.ones([batch_size, self.rows, self.cols, self.num_classes])
print(batch_Y_d.shape)

(100, 64, 64, 2350)
person giser_yugang    schedule 08.03.2019
comment
Спасибо, я пробовал это раньше, и он работал, но у меня возникли другие проблемы. В любом случае это ответ на мой вопрос, поэтому я принимаю его, а затем задаю другую проблему. - person Ammar Ul Hassan; 08.03.2019
comment
@AmmarUlHassan Вы можете поделиться с вами ссылкой на другую проблему. - person giser_yugang; 08.03.2019