如何从mnist.load_data()中选择所需的训练样本

问题描述 投票:0回答:2

这里是机器学习的新手。我正在尝试训练1000对训练数据和500对测试数据,而不是整个数据集。但是,我得到了错误:

“” ValueError:检查目标时出错:预期activation_24具有形状(10,),但数组的形状为(1,)“]

这是我与数据有关的代码的一部分:

# load data
(X_train, y_train), (X_test, y_test) = mnist.load_data()

X_train = X_train / 255
X_test = X_test / 255

X_train = X_train.reshape(-1,1,28,28) 
X_train = X_train[:1000,:,:]
X_test = X_test[:500,:,:]


y_train = y_train[:1000]
y_test  = y_test[:500]

X_test = np.array(X_test)
X_test = X_test.reshape(-1,1,28,28) 

print('X_train shape: ',X_train.shape)
print('X_test shape: ',np.shape(X_test ))
print('y_train shape: ',y_train.shape)
print('y_test shape: ',np.shape(y_test ))

输出:

X火车形状:(1000、1、28、28)X_test形状:(500、1、28、28)y_train形状:(1000,)y_test形状:(500,)

我在此正确吗?还有其他方法可以实现目标吗?在此先感谢

python tensorflow keras deep-learning mnist
2个回答
0
投票

只需从训练集中获取1000个,从测试集中获取500个,仅此而已:

X_train = X_train[:1000].reshape(1000,28,28,1)
y_train = y_train[:1000].reshape(1000,1)

X_test = X_test[:500].reshape(500,28,28,1)
y_test = y_test[:500].reshape(500,1)

Keras默认使用最后一个频道,因此(批号28、28、1)。对于y,数据的形状需要从(batch,)变为(batch,1)。您也可以使用[:batch]从第一个维度获取元素,然后在同一行上进行重塑。


0
投票

X_train不应为形状(1000、1、28、28)。

使用Keras的“ channels_last”格式,您的数据形状应为(批量x高度x宽度x通道)等于(1000,28,28,1)。

查看此示例:https://keras.io/examples/mnist_cnn/

© www.soinside.com 2019 - 2024. All rights reserved.