TensorFlow基础文本分类练习运行model.fit出现形状不兼容错误
错误修复方案
问题根因
- 核心错误:评估指标与任务场景不匹配
你当前做的是4分类任务,使用的SparseCategoricalCrossentropy损失函数适配形状为(None, 1)的整数类别标签,模型输出是形状为(None, 4)的各分类预测值。你选用的普通tf.metrics.Accuracy()要求输出和标签形状完全一致才能计算,因此触发形状不兼容报错。 - 潜在问题:数据集读取路径错误
你调用数据集读取接口时直接传入相对路径'train'/'test',但数据集实际存放在下载时指定的缓存目录下,相对路径大概率找不到数据集,会引发额外报错。
修复代码
1. 修改数据集读取路径
将原代码中数据集读取部分的路径参数替换为提前定义的绝对路径变量:
raw_train_ds = tf.keras.preprocessing.text_dataset_from_directory( train_dir, batch_size=batch_size, validation_split=0.2, subset='training', seed=seed) raw_val_ds = tf.keras.preprocessing.text_dataset_from_directory( train_dir, batch_size=batch_size, validation_split=0.2, subset='validation', seed=seed) raw_test_ds = tf.keras.preprocessing.text_dataset_from_directory( os.path.join(dataset_dir, 'test'), batch_size=batch_size)
2. 修改模型编译的评估指标
将普通准确率替换为适配稀疏标签多分类的准确率指标:
model.compile(loss=losses.SparseCategoricalCrossentropy(from_logits=True), optimizer='adam', metrics=[tf.keras.metrics.SparseCategoricalAccuracy()])
修改完成后重新运行代码即可正常启动训练。
内容的提问来源于stack exchange,提问作者Ash_07
相关产品推荐
相关产品推荐

