ValueError:无法将大小为 23760 的数组重新整形为形状 (240,1,28,28)

# 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)

http://img1.mukewang.com/629866f3000146ad07370461.jpg

慕妹3146593
浏览 263回答 1
1回答

LEATH

正如评论中已经提到的那样,23760 != 240*1*28*28,所以重新整形为那个特定的数组是不可能的。事实上,28*28 甚至不能整除 23760,所以即使train.shape[0]换成别的东西,这也行不通。假设train.shape[0]和1是您要用于前两个维度的内容,则最终维度的乘积必须为 23760/240 = 99。由于这不是平方数,因此这两个数字必须不同。99 的素数分解是 99 = 3*3*11,所以唯一可能的选择是(240,&nbsp;1,&nbsp;1,&nbsp;99),&nbsp;(240,&nbsp;1,&nbsp;3,&nbsp;33),&nbsp;(240,&nbsp;1,&nbsp;9,&nbsp;11),以及它们的排列。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python