python - Keras 模型错误,引用不兼容的目标形状,但模型摘要并未表明它是错误的
问题描述
我编写了一个模型来使用一种热编码对文本进行分类。以下是我的代码(我没有包含导入以使代码对读者简洁):
# Generate one-hot encodings for data and labels
num_labels = len(set(train_label_text))
# vocab_size = len(list(itertools.chain.from_iterable(train_data_text)))
vocab_size = 10000
label_tokenizer = keras.preprocessing.text.Tokenizer(num_words=num_labels)
label_tokenizer.fit_on_texts(train_label_text)
train_label = label_tokenizer.texts_to_matrix(train_label_text)
data_tokenizer = keras.preprocessing.text.Tokenizer(num_words=vocab_size)
data_tokenizer.fit_on_texts(train_data_text_unsplit)
train_data = data_tokenizer.texts_to_matrix(train_data_text)
# Model
model = keras.Sequential()
model.add(keras.layers.Dense(8, input_shape=(vocab_size,), activation=tf.nn.relu))
model.add(keras.layers.Dense(num_labels, activation=tf.nn.sigmoid))
model.compile(optimizer=tf.train.AdamOptimizer(),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
x_val = train_data[:leave_alone]
partial_x_train = train_data[leave_alone:]
y_val = train_label[:leave_alone]
partial_y_train = train_label[leave_alone:]
history = model.fit(partial_x_train,
partial_y_train,
epochs=epochs,
batch_size=512,
validation_data=(x_val, y_val),
verbose=1)
我的模型总结如下:
层(类型)输出形状参数#
dense_40(密集)(无,8)80008
dense_41(密集)(无,14)126
总参数:80,134 可训练参数:80,134 不可训练参数:0
我的数据和目标如下:
输入的前两条记录:array([[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]])
输出的前两条记录:array([[0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0 .], [0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
输出中的值数与模型摘要中的 14 个相匹配。但是,当我运行模型时,出现以下错误:
ValueError:检查目标时出错:预期dense_43的形状为(1,),但数组的形状为(14,)
我检查了网络上的示例以及其他问题的一些答案,但没有看到我做错了什么。我有什么明显的遗漏吗?谢谢!
解决方案
推荐阅读
- javascript - 单击 php 按钮以全屏显示网页内容
- python - 为什么 Kivy 在我需要时不刷新/更新我的屏幕?
- html - 具有滚动功能的 Wordpress 页面菜单
- qt - QT-QML:如何创建图像(线)并对其进行处理
- css - 使用 CSS 在 Juypter 实验室控制台中自定义 Pandas 数据框的字体
- c# - EFCore.BulkExtensions - 使用 pimarykey 批量更新
- excel - 如何使用 VBA 单击“确定”或“取消”按钮以“从网页弹出消息”?
- macos - Filezilla - 您无权列出此目录
- c# - 是否有内置方法或智能方法可以在 C# 中获取对象的路径?
- javascript - 如何根据电影 id 1-20 设置显示多少部电影的限制