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

TensorFlow构建草莓图像分类器报错Unknown activation function: heaviside

问题原因

报错核心是TensorFlow Keras的内置激活函数库中不存在名为heaviside的激活函数,你在输出层错误指定了不存在的激活函数才触发该报错。

修复方案

你做的是健康/不健康草莓的二分类任务,直接按以下修改代码即可运行:

  1. 修改输出层的激活函数
    找到vgg_build_model函数里的这行代码:
m.add(layers.Dense(2, activation='heaviside'))

替换为以下内容:
因为你用的是binary_crossentropy损失,且数据生成器指定的是class_mode='binary',更匹配的写法是输出1个神经元,用sigmoid激活:

m.add(layers.Dense(1, activation='sigmoid'))

如果要保留输出2个神经元的写法,需要把激活改成softmax,同时把损失函数换成sparse_categorical_crossentropy,对新手来说第一种改法更简单不容易出错。

  1. 附加优化(可选,避免后续训练效果差)
    你现在写的if layer.name == 'block_conv1'是错误的,VGG16的卷积层命名格式是blockX_convY,比如block5_conv1,如果你想微调最后一个卷积块的参数,可以改成:
if layer.name == 'block5_conv1':

如果不需要微调,直接全冻结卷积基也可以,新手初期先保证代码能跑通再调整训练效果即可。

修改完成后重新运行代码,就不会再报激活函数不存在的错误,模型可以正常开始训练。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:24:00