Дополнительно
Получаем ошибку: Cannot reshape array of size 122304 into shape (52,28,28)
Я пытаюсь изменить форму массива numpy как:
data3 = data3.reshape((data3.shape[0], 28, 28))
где data3
- это:
[[54 68 66 ..., 83 72 58]
[63 63 63 ..., 51 51 51]
[41 45 80 ..., 44 46 81]
...,
[58 60 61 ..., 75 75 81]
[56 58 59 ..., 72 75 80]
[ 4 4 4 ..., 8 8 8]]
data3.shape
- (52, 2352)
.
Но я продолжаю получать следующую ошибку:
ValueError: cannot reshape array of size 122304 into shape (52,28,28)
Exception TypeError: TypeError("'NoneType' object is not callable",) in <function _remove at 0x10b6477d0> ignored
Что происходит и как исправить эту ошибку?
UPDATE:
Я'делаю это для получения data3
, которая используется выше:
def image_to_feature_vector(image, size=(28, 28)):
return cv2.resize(image, size).flatten()
data3 = np.array([image_to_feature_vector(cv2.imread(imagePath)) for imagePath in imagePaths])
imagePaths содержит пути ко всем изображениям в моем наборе данных. На самом деле я хочу преобразовать data3 в плоский список 784-мерных векторов
, но
image_to_feature_vector
преобразует его в 3072-мерный вектор!!!
6
2
Вы можете изменить форму матричных массивов numpy так, чтобы before(a x b x c..n) = after(a x b x c..n). т.е. общее количество элементов в матрице должно быть таким же, как и раньше, В вашем случае вы можете преобразовать ее так, чтобы преобразованные данные3 имеет форму (156, 28, 28) или просто :-...
Выходные данные имеют вид
Во-первых, количество элементов входного изображения должно соответствовать количеству элементов в желаемом векторе признаков.
Предполагая, что все вышеперечисленное выполнено, нижеприведенный вариант должен работать: