tensorspace模型预处理报错,从ValueError: Unknown Layer:LayerName开始和后续引发的一系列错误

tensorspace模型预处理报错ValueError: Unknown Layer:LayerName

前言经典抱怨:报错取之不尽用之不竭。

在拿到跑出来的keras模型文件,想要展示为tensorspace的效果,需要先进行模型预处理,将模型转换为tensorspace可以处理的文件类型,在bash中运用tensorspace-converter,进行模型预处理时遇到了以下问题:

1:在bash中运行脚本文件首先报错:unknown layer keras
这个问题主要是由于训练模型的keras版本和做模型预处理的windows的keras版本不一致。为了解决这个问题将我的keras版本升级到和训练模型中使用到keras版本一致。
可以使用

pip install —-upgrade keras==版本号

如何更加快速安装可以看看这里

2:更新keras后,在pycharm中查看model.summary和bash中都报错:has no attributes ''flags"
这是因为keras版本与tensorflow版本不匹配,查看keras与tensorflow的匹配版本。更新tensorflow。

3:pycharm报错:Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll 下载cudart64_101.dll这个问题的原因没有明白,但是下载cudart64_101.dll,放在系统目录下。下载并安装CUDA Toolkit 10.1之后,再安装tensorflow-gpu和tensorflow-cpu,然后重启电脑,就解决了。但是在运行代码的时候会出现提示:Successfully opened dynamic library cudart64_100.dll。试了

import os
os.environ[‘TF_CPP_MIN_LOG_LEVEL‘] =2

但是没用,依旧存在。但是不影响运行,就没有管他。

4:pycharm报错:module 'tensorflow.python.framework.ops' has no attribute '_TensorLike' 。 还是因为keras版本与tensorflow版本不匹配,换了一个更低的tensorflow版本。

5:module 'tensorflow.python.keras.utils.generic_utils' has no attribute 'populate_dict_with_module_objects' 。tensorflow版本过高,降低版本

6:脚本文件报错:ValueError: Unknown initializer: GlorotUniform
这个问题找了好久,发现是因为 在服务器上安装 keras 时候是在 tensorflow 里面进行的,而 Windows 下面进行加载的时候导入的却是 keras 下面的加载模型,把对应的导入模块进行替换即可。统一模型与windows中keras.将训练模型中的 :

from tensorflow import keras

更改为:

import keras

,然后重新训练模型,保存模型文件,进行convert,就可以运行成功,得到model.json文件和group1-shard1of1。

关于TensorSpace-Converter运行的脚本文件,对于tensorflow,tensorboard,keras等的版本稍有不匹配就会报错,最经典的错误就是参数不存在的错误,比如:

module 'tensorflow' has no attribute 'estimator'

修改一个文件的版本就会引发另一个文件的不匹配,差点和多诺米骨牌反应肩并肩

其实还有很多报错都没有写入,是因为要解决模型预处理,运行convertCombined.sh文件,所以要统一keras版本,才引发后续一系列版本不匹配的问题,中间很多库的版本都被间接更改了,想直接通过更改keras和tensorflow版本进行还原就有点困难。模型处理完之后我将keras,tensorflow,tensorboard,tensorspace等相关的库都卸了,然后通过pip安装他默认推荐的版本,这样就不会出现版本不匹配的问题了。

你可能感兴趣的:(tensorflow,深度学习,bug)