Numpy Broadcast_to ((50000,), (50000,32,32,3)) завершается ошибкой.Зачем? - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь транслировать 1-мерный массив в 4-мерный массив, но получаю ошибку:

operands could not be broadcast together with remapped shapes [original->remapped]: (50000,) and requested shape (50000,32,32,3)

Это мой код:

from tensorflow.keras.datasets import cifar10

import numpy as np

(x_train, y_train), (x_test, y_test) = cifar10.load_data()

mask = (y_train == 0) | (y_train == 1)
y_train = np.ma.masked_array(y_train, mask = mask)
mask = np.broadcast_to(mask.reshape(-1), x_train.shape)
x_train = np.ma.masked_array(x_train, mask = mask) # Error happens here

# Same for the test set

Моя цель - вырезать кучу классов из данных и оставить только классы 0 и 1.

Я думал, что вещание разрешено, когда отсутствуют размеры, как в моем случае. Кто-нибудь может объяснить, почему я получаю ошибку?

Я использую Python 3.7.2.

1 Ответ

2 голосов
/ 09 апреля 2019

Чтобы вещание работало, вам нужно изменить форму массива так, чтобы размеры с размером 50000 выровнены. В вашем примере маска должна быть заменена по маске [:, Нет, Нет, Нет]. Таким образом (50000,1,1,1) можно транслировать на (50000,32,32,3).

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