Python 输出层';s形状始终为(1,)

Python 输出层';s形状始终为(1,),python,keras,jupyter-notebook,shapes,Python,Keras,Jupyter Notebook,Shapes,我正在尝试制作一个简单的Keras模型。但是,无论我指定的输出形状是什么,输出层总是形状(1,),因此我无法训练我的模型,因为输出层和目标数据形状不匹配 导入keras 从keras.models导入顺序 从keras.layers导入InputLayer、LSTM和Dense #63是唯一字符数 #128是字符序列的长度 X=…#X是一个单色的数组;X.shape==(96092128,63) Y=…#Y是一个炎热的夜晚;Y.shape==(96092,63) 模型=顺序() 添加(Input

我正在尝试制作一个简单的Keras模型。但是,无论我指定的输出形状是什么,输出层总是形状
(1,)
,因此我无法训练我的模型,因为输出层和目标数据形状不匹配

导入keras
从keras.models导入顺序
从keras.layers导入InputLayer、LSTM和Dense
#63是唯一字符数
#128是字符序列的长度
X=…#X是一个单色的数组;X.shape==(96092128,63)
Y=…#Y是一个炎热的夜晚;Y.shape==(96092,63)
模型=顺序()
添加(InputLayer([128,63]))
型号.添加(LSTM(96))
模型.添加(密度(63))
model.compile(
优化器=keras.optimizers.RMSprop(1e-3,衰减=1e-5),
损失=keras.loss.sparse\u分类\u交叉熵,
)
model.fit(X,Y)#ValueError:检查目标时出错:预期密集#4具有形状(1),但获得具有形状(63,)的数组
如您所见,输出密集层的形状是
(1,)
,但它必须是
(63,)
。我做错了什么


我使用的是带有预装Keras的Google Colab。

错误是输出层的形状是63。然而,出于某种原因,它期望1


在本例中,它期望1的原因是因为您使用的是
sparse\u categorical\u crossentropy
,它期望一个表示输出类别索引的整数。相反,请使用
categorical\u crossentropy
,这需要对输出类别进行一次热编码。

您使用的是什么损失函数?请参阅更新后的文章,其中显示了
模型。编译
参数