TensorFlow-Addons中WeightNormalization层实现的TypeError问题求助
解决TensorFlow Addons WeightNormalization的TypeError问题
这个错误确实是typeguard==3.0.1与TensorFlow Addons(tfa)中WeightNormalization的类型注解不兼容导致的:tfa代码里将layer参数的类型注解写为tf.keras.layers(这是一个模块而非类类型),而typeguard 3.x版本对类型检查的规则更严格,要求注解必须是合法的类型/类型元组,因此触发了isinstance() arg 2 must be a type or tuple of types错误。
以下是三种可行的解决方案:
方案1:降级typeguard到兼容版本
执行命令将typeguard降级至2.x系列(推荐2.13.3,与当前tfa版本兼容):
pip install typeguard==2.13.3
完成后重新运行代码即可。
方案2:修改TensorFlow Addons源码(本地环境适用)
找到本地安装的tensorflow_addons/layers/wrappers.py文件,定位到WeightNormalization类的__init__方法:
@typechecked def __init__(self, layer: tf.keras.layers, data_init: bool = True, **kwargs):
将layer: tf.keras.layers修改为layer: tf.keras.layers.Layer(Layer是所有Keras层的基类类型),保存文件后重新运行代码。
方案3:临时禁用typeguard类型检查
在导入tfa前添加禁用代码,跳过类型检查:
import typeguard typeguard.disable() import tensorflow as tf import tensorflow_addons as tfa # 后续代码保持不变
该方法无需修改依赖或源码,适合快速测试场景。
内容的提问来源于stack exchange,提问作者zwldwhdk
相关产品推荐
相关产品推荐

