keras 中load模型时报错 ValueError: Unknown activation function:gelu

问题描述
在使用keras调用bert模型训练好的h5文件时报错,没有激活函数gelu
ValueError: Unknown activation function:gelu

报错原因:
应该是keras版本之间不匹配的问题,这里用的tensorflow版本为1.15.0,keras版本为2.3.1,另外附带的keras依赖的其他包版本如下:

在这里插入图片描述

解决办法
经过多步试错,发现对keras依赖的包的版本降级可行,降级为:

Keras==2.3.1
keras-bert==0.83.0
keras-embed-sim==0.9.0
keras-layer-normalization==0.15.0
keras-multi-head==0.28.0
keras-pos-embd==0.12.0
keras-position-wise-feed-forward==0.7.0
Keras-Preprocessing==1.1.0
keras-self-attention==0.50.0
keras-transformer==0.39.0

如果还不行,可以尝试改变tensorflow的相关包版本:

tensorboard-plugin-wit==1.6.0
tensorflow==1.15.0
tensorflow-estimator==1.15.1
termcolor==1.1.0
terminado==0.9.3

有用的话请留下个赞再走吧~

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误通常是由于Keras模型使用了一个无法识别的层或模块而导致的。其可能包括拼写错误或未导入所需的层或模块等问题。 解决此问题的一种方法是检查代码的所有层或模块,确保它们都被正确导入并且名称拼写正确。如果代码使用了自定义层或模块,则需要确保它们已正确定义并包含在代码。 另外,还可以尝试升级Keras版本或使用其他深度学习框架,例如PyTorch或TensorFlow,以查看是否可以解决问题。 ### 回答2: valueerror: unknown layer: functional 的错误通常是由于使用了 Keras 函数式 API 未定义的层导致的。 Keras 的函数式 API 是一种使用层和张量之间进行连接来构建深度学习模型的方式。这种 API 允许用户创建灵活的模型架构,比如具有多个输入或多个输出的模型,或者具有共享层的模型。这些模型通常是由多个 Keras 层组成的。 当出现 valueerror: unknown layer: functional 的错误,一般是因为 Keras 函数式 API 使用了未定义的层。 解决这个错误的方法有以下几种: 1. 检查代码所有使用的 Keras 层,确保它们都是在模型定义过的。如果使用了未定义的层,将其替换为已定义的层。 2. 如果您使用 Keras 的函数式 API 创建了自己的层,请确保您在新层调用了通用层类的构造函数,并正确定义了输入和输出。 3. 确保您的代码导入了所有必需的库。Keras 依赖于众多的底层库,如果您缺少某个库,可能会导致出现错误。 4. 检查您的模型架构,确保它们都是有效的。如果您的模型架构有问题,比如输入/输出尺寸不对,或者存在悬挂的层,那么可能会引发错误。 总之,处理 valueerror: unknown layer: functional 的错误通常需要仔细检查代码、库和模型架构,并确保它们都是正确的。如果需要,可以参考 Keras 的官方文档或其他教程,以了解如何正确操作 Keras 的函数式 API。 ### 回答3: 当使用Keras模型进行训练与推理,常见的错误会是“ValueError: Unknown layer: functional”。 首先,这个错误通常出现在使用KerasFunctional API(函数式API)构建模型。使用这种API的主要目的是为了创建更加复杂的模型,例如具有多个输入或输出的模型,或者共享层的模型。 造成这个错误的原因很多,其最常见的是在使用模型使用了未定义的层。因此,当模型遇到这个未知的层,它就会抛出“Unknown layer: functional”的异常。这通常是由于在模型的层次结构引入了一些错误或遗漏导致的。 解决这个问题的方法通常是检查模型的层次结构,并确保每个层都已正确定义和链接。为了更进一步的诊断和解决问题,可以使用以下方法: 1. 确认代码和模型定义正确,确保每个层都被正确地定义和链接。 2. 检查每个层的名称是否都是唯一的。 3. 使用print()或debug模式打印模型,确保每个层都被正确地链接。 4. 尝试通过在模型引入一个新的层来检查是否存在名称冲突或未定义的层。 在大多数情况下,解决这个问题的最简单方法是确保所有模型层都以正确的顺序和方式链接在一起。通常应在定义所有层之后检查完整的模型结构,以确保所有层都已正确链接,并且每个层的名称都是唯一的。这样可以避免发生 “ValueError: Unknown layer: functional”这类错误,也可以确保模型拟合和精度最大化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值