Я получаю ValueError: не удалось передать входной массив из формы (3072) в форму (5000) - PullRequest
0 голосов
/ 19 июня 2020
num_test = X.shape[0]
num_train = self.X_train.shape[0]
dists = np.zeros((num_test, num_train))
for i in range(num_test):
    dists[i,:] = np.sqrt(np.sum(np.square(self.X_train - X[i,:]), axis = 0))

Я получаю

ValueError: could not broadcast input array from shape (3072) into shape (5000)

Форма X равна (500, 3072), поэтому форма X[i,:] равна (3072,) Форма self.X_train равна (5000, 3072), и dists - массив нулей размером (num_test, num_train).

Почему я получаю эту ошибку?

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

В строке

dists[i,:] = np.sqrt(np.sum(np.square(self.X_train - X[i,:]), axis = 0))

нужно заменить axis=0 на axis=1, так как уменьшение размеров происходит по суммируемой оси.

0 голосов
/ 19 июня 2020

Вы имели в виду это?:

dists[i,:] = np.sqrt(np.sum(np.square(self.X_train - X[i,:][None,:]), axis = 0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...