You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow模型训练出现形状不兼容错误,请求技术帮助

解决TensorFlow训练时的形状不兼容错误

问题根源

你遇到的ValueError: Shapes (None, 1) and (None, 26) are incompatible错误,核心原因是标签格式与损失函数不匹配:

  • 模型最后一层是26神经元的softmax,对应26分类任务
  • 当前使用的categorical_crossentropy损失函数要求标签是one-hot编码格式(形状为(样本数, 26)),但你的训练/验证标签是整数形式(形状为(样本数, 1)),两者形状不兼容
  • 警告Model was constructed with shape (None, 1)是标签形状不匹配引发的关联提示

两种可行解决方案

方案1:修改损失函数(最简单,无需改动标签)

直接将损失函数替换为sparse_categorical_crossentropy,该损失函数专门适用于整数形式的分类标签:

model.compile(optimizer = 'rmsprop',
              loss = 'sparse_categorical_crossentropy',  # 此处修改
              metrics=['accuracy'])

方案2:将标签转换为one-hot编码(保持原损失函数)

如果坚持使用categorical_crossentropy,需要将整数标签转换为one-hot编码格式,修改train_val_generators函数:

def train_val_generators(training_images, training_labels, validation_images, validation_labels):
  
  training_images = np.expand_dims(training_images,axis=3)
  validation_images = np.expand_dims(validation_images,axis=3)

  # 新增:将整数标签转为one-hot编码
  training_labels = tf.keras.utils.to_categorical(training_labels, num_classes=26)
  validation_labels = tf.keras.utils.to_categorical(validation_labels, num_classes=26)

  train_datagen = ImageDataGenerator(rescale = 1./255,
                                     rotation_range= 40,
                                     width_shift_range=0.2,
                                     height_shift_range=0.2,
                                     shear_range=0.2,
                                     zoom_range=0.2,
                                     horizontal_flip=True,
                                     fill_mode='nearest')


  train_generator = train_datagen.flow(x=training_images,
                                       y=training_labels,
                                       batch_size=32) 

  validation_datagen = ImageDataGenerator(rescale = 1./255)

  validation_generator = validation_datagen.flow(x=validation_images,
                                                 y=validation_labels,
                                                 batch_size=32) 

  return train_generator, validation_generator

注意:两种方案二选一即可,无需同时修改。

内容的提问来源于stack exchange,提问作者LBlueLockL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 10:13:22