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

Tensorflow训练脑肿瘤MRI检测模型报No gradients provided错误

错误原因

  • 核心触发原因:你在model.compile时将loss参数设置为了None,模型没有损失函数用来计算预测值和真实标签的误差,自然无法生成梯度更新网络参数,直接触发了当前报错。
  • 潜在不兼容问题:你的模型最后一层dense_1输出维度是2,属于多分类输出逻辑,但你给flow_from_directory设置的class_mode='binary'会生成单值的0/1标签,和输出维度不匹配,即使补上损失函数后续也会报错。

解决方法

根据你的需求二选一即可:

方案1:适配二分类设置

如果要沿用class_mode='binary'的二分类配置,做两处修改:

  1. 调整最后一层全连接层的输出维度和激活函数:
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
  1. 编译时指定对应二分类损失函数:
model.compile(
    optimizer='adam',
    loss='binary_crossentropy',
    metrics=['accuracy'],
)

方案2:适配多分类输出

如果要保持最后一层输出维度为2,做两处修改:

  1. 调整flow_from_directory的class_mode参数:
train_generator = datagen.flow_from_directory(
    TRAIN_DIR,
    target_size=(150, 150),
    batch_size=32,
    class_mode='sparse',
    subset='training'
)
# val_generator做相同的class_mode修改
  1. 给最后一层加softmax激活,同时指定对应多分类损失函数:
# 最后一层修改
model.add(tf.keras.layers.Dense(2, activation='softmax'))
# 编译参数修改
model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'],
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 11:27:04