为了账号安全,请及时绑定邮箱和手机立即绑定

输出层的形状总是 (1,)

输出层的形状总是 (1,)

慕田峪4524236 2022-06-02 18:11:45
我正在尝试制作一个简单的 Keras 模型。但无论我指定什么输出形状,输出层始终是该形状(1,),因此由于输出层和目标数据形状不匹配,我无法训练我的模型。import kerasfrom keras.models import Sequentialfrom keras.layers import InputLayer, LSTM, Dense# 63 is the number of unique characters# 128 is the length of a sequence of charactersX = ... # X is an one-hot ndarray; X.shape == (96092, 128, 63)Y = ... # Y is an one-hot ndarray; Y.shape == (96092, 63)model = Sequential()model.add(InputLayer([128, 63]))model.add(LSTM(96))model.add(Dense(63))model.compile(  optimizer=keras.optimizers.RMSprop(1e-3, decay=1e-5),  loss=keras.losses.sparse_categorical_crossentropy,)model.fit(X, Y) # ValueError: Error when checking target: expected dense_4 to have shape (1,) but got array with shape (63,)如您所见,输出密集层的形状是,(1,)但它必须是形状(63,)。我究竟做错了什么?我正在使用带有预装 Keras 的 Google Colab。
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

该错误的意思是输出层的形状63。但是,由于某种原因,它期望为1。

在这种情况下,它需要 1 的原因是因为您正在使用sparse_categorical_crossentropy,它需要一个表示输出类别索引的整数。取而代之的是 use categorical_crossentropy,它期望输出类别的 one-hot 编码。


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号