Unknown layer: TCN 关于加载自己定义类和导入tcn模型的问题

Unknown layer: TCN 关于加载自己定义类和导入tcn模型的问题,第1张

Unknown layer: TCN 关于加载自己定义类和导入tcn模型的问题

报错合集:

  1. ValueError: Unknown layer: TCN
  2. The added layer must be an instance of class Layer. Found:
1、发现问题

跑关于TCN模型的时候,我将跑完后的模型save为“.h5”文件,然后写前端,实现选择不同模型做不同时间序列预测,然后在执行

model_tcn=load_model(model_path)

遇到了报错

  File "S:\physon\envs\tensorflow\lib\site-packages\keras\utils\generic_utils.py", line 140, in deserialize_keras_object
    ': ' + class_name)
ValueError: Unknown layer: TCN
Unknown layer: TCN

原因是加进了未知层,然后我开始了探索:经过分析,主要有下面几个原因,现已解决,记录下来方便后面查找:

2、解决问题

第一步 添加自定义层
解决方案:我首先查询如何添加自定义层,在load函数里面添加“custom_objects”属性:

model_tcn=load_model(model_path,custom_objects={'TCN':TCN})

注意,这里的TCN根据自己实际情况替换,写成你自己定义的层名,model_path是自己的模型位置
修改,运行,等待。








漂亮!
报错: The added layer must be an instance of class Layer

  File "S:\physon\envs\tensorflow\lib\site-packages\keras\engine\sequential.py", line 133, in add
    'Found: ' + str(layer))
TypeError: The added layer must be an instance of class Layer. Found: <tcn.tcn.TCN object at 0x000001F72743BDC8>

第二步 检查tf.keras和keras模块
网上找到的原因:使用tf.keras和keras模块,或出现使用tensorflow.python.keras方式引用和keras引用混合,就会出现这个错误
解决方案:删除keras前面的tf或tensorflow,可参照链接: 点我.
修改,运行,等待。








漂亮,还是报第一步的错,检查后我没import过tensorflow啊,接着找,最后!通过查看tcn的源码文件tcn.py发现,原来tcn是基于tensorflow的,怪不得!

第三步 检查修改load函数
既然tcn是基于tensorflow那就应该使用tensorflow的导入模型方式
解决方案:导入tensorflow,在load_model 函数前面加上*tf.keras.models.*如下

import tensorflow as tf
model_tcn=tf.keras.models.load_model(model_path,custom_objects={'TCN':TCN})

修改,运行,等待。








它活过来了!终于解决了!!!

记录自己问题的,有不对的地方欢迎大佬指正!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/569822.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存