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

Keras卷积模型Model.predict()返回固定异常值问题求助

问题排查与解决

核心矛盾:任务类型与模型架构不匹配

你要完成的是3类别图像分类任务,但当前两套模型都是按语义分割(输出与输入同尺寸的像素级分类结果)设计的,这是导致输出完全不符合预期的根本原因。

具体问题拆解及修复步骤

  1. 重构分类专用的模型架构
    分类任务需要将图像特征压缩为全局特征,再映射到3个类别的概率值。替换现有U-Net类架构为分类结构:
def get_model(width=512, height=512):
    inputs = layers.Input(shape=(width, height, 1))
    
    # 特征提取模块
    x = layers.Conv2D(32, (3,3), activation='relu', padding='same')(inputs)
    x = layers.MaxPool2D((2,2))(x)
    x = layers.Conv2D(64, (3,3), activation='relu', padding='same')(x)
    x = layers.MaxPool2D((2,2))(x)
    x = layers.Conv2D(128, (3,3), activation='relu', padding='same')(x)
    x = layers.MaxPool2D((2,2))(x)
    x = layers.Conv2D(256, (3,3), activation='relu', padding='same')(x)
    x = layers.MaxPool2D((2,2))(x)
    
    # 全局池化+分类输出头
    x = layers.GlobalAveragePooling2D()(x)
    x = layers.Dense(128, activation='relu')(x)
    # 3分类任务用softmax输出概率分布
    outputs = layers.Dense(3, activation='softmax')(x)
    
    model = tf.keras.Model(inputs=inputs, outputs=outputs)
    return model
  1. 匹配损失函数与标签格式
  • 如果你的标签是整数编码(形状为(batch_size,),值为0/1/2),使用sparse_categorical_crossentropy损失(更适合当前场景);
  • 如果标签是one-hot编码(形状为(batch_size,3)),使用categorical_crossentropy损失。示例配置:
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-4),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
  1. 规范数据类型与预处理
  • 确保输入图像为float32类型,且归一化到[0,1]区间,避免数值溢出:
    # 假设df_dicom是原始图像数组,添加归一化处理
    df_dicom = df_dicom.astype('float32') / 255.0
    
  • 检查标签数据类型:整数编码标签需为int32或int64,避免与模型输出的float类型冲突。
  1. 修正预测逻辑
    预测结果是3个类别的概率分布,取最大值索引即可得到对应类别:
preds = model.predict(test_images)
# 获取每个样本的预测类别
pred_classes = preds.argmax(axis=1)

为什么会返回[-2147483648]?

这个值是int32类型的最小值,原因大概率是:

  • 语义分割架构输出高维特征图,你在处理预测结果时错误转换为int32类型,触发数值溢出;
  • 部分模型输出层未设置激活函数,训练过程中出现极端数值,转换时触发int32下溢。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 05:24:59