这里是机器学习的新手。我正在尝试训练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,)
我在此正确吗?还有其他方法可以实现目标吗?在此先感谢
只需从训练集中获取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]从第一个维度获取元素,然后在同一行上进行重塑。
X_train
不应为形状(1000、1、28、28)。
使用Keras的“ channels_last”格式,您的数据形状应为(批量x高度x宽度x通道)等于(1000,28,28,1)。