ValueError: невозможно преобразовать массив размером 23760 в форму (240,1,28,28) - PullRequest
0 голосов
/ 21 сентября 2019
# Reshape and normalize training data
trainX = train[:, 1:].reshape(train.shape[0],1,28, 28).astype( 'float32' )
x_train = trainX / 255.0

y_train = train[:,98]

# Reshape and normalize test data
testX = test[:,1:].reshape(test.shape[0],1, 28, 28).astype( 'float32' )
x_test = testX / 255.0

y_test = test[:,98]

Я пытаюсь преобразовать мои csv train_data и test_data в 3-D матрицу, но получаю ошибку:

ValueError Traceback (most recent call last) 
<ipython-input-57-268af51a6b14> in <module>()
----> 1 trainX = train[:, 1:].reshape(train.shape[0],1,28, 28).astype( 'float32' )
      2 x_train = trainX / 255.0
      3
      4 y_train = train[:,98]
      5
ValueError: cannot reshape array of size 23760 into shape (240,1,28,28)

Снимок экрана отчета об ошибках

1 Ответ

0 голосов
/ 21 сентября 2019

Как уже упоминалось в комментариях, 23760! = 240 * 1 * 28 * 28, поэтому преобразование в этот конкретный массив невозможно.На самом деле, 28 * 28 даже не делит 23760, поэтому даже если train.shape[0] заменить чем-то другим, это никогда не сработает.

Предполагая, что train.shape[0] и 1 - это то, что вы хотитеиспользуйте для первых двух измерений, конечные измерения должны иметь произведение 23760/240 = 99. Поскольку это не квадратное число, эти два числа должны будут отличаться.Первичная факторизация 99 равна 99 = 3 * 3 * 11, поэтому единственно возможными вариантами являются

(240, 1, 1, 99), (240, 1, 3, 33), (240, 1, 9, 11),

и их перестановки.

...