Я пытаюсь превратить матрицу нормализованных данных пикселей из mnist в матрицу массивов с одним «горячим» массивом, представляющих y_val каждого пикселя в зависимости от класса, и если он больше 0.
Вотпример ввода, более конкретно, одна строка из одного примера в наборе данных:
[[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0.01176471]
[0.07058824]
[0.07058824]
[0.07058824]
[0.49411765]
[0.53333336]
[0.6862745 ]
[0.10196079]
[0.6509804 ]
[1. ]
[0.96862745]
[0.49803922]
[0. ]
[0. ]
[0. ]
[0. ]]
Массив из 28 элементов значений яркости пикселей.Теперь предположим, что реальный класс этого входа имеет число «2».Скрипт будет проходить и вставлять один горячий массив, в котором в настоящее время находится каждое значение пикселя.
Если пиксель равен == 0, то он будет преобразован из
[0. ]
в
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
Поскольку я использую 11-ю запись для представления пустого пикселя.
Если бы значение элемента массива было> 0, он вставил бы горячий массив примеров истинной метки, "2".
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
Это код, который у меня такfar
#copying the shape of the train data matrix of arrays into a new
#array
new_y_train = np.copy(x_train)
for ex_index, example in enumerate(x_train):
for row_index, row in enumerate(example):
for px_index, pixel in enumerate(row):
temp_arr = np.zeros(11)
if pixel > 0:
pixel = np.insert(temp_arr, np.argmax(y_train[index]), 1)
new_y_train[ex_index][row_index][px_index] = pixel
else:
pixel = np.insert(temp_arr, 11, 1)
new_y_train[ex_index][row_index][px_index] = pixel
Однако, когда я попадаю на эту строку
new_y_train[ex_index][row_index][px_index] = pixel
, я получаю ошибку о трансляции массива до значения в пикселях ", не удалось передать входной массив из фигуры (12) в форму (1) "
Не уверен, как изменить размер или изменить массив, чтобы учесть ввод этого нового горячего массива в матрицу.
Любая помощь будет отличной!