调用deepvog.load_DeepVOG()触发Keras symbolic张量无__len__实现错误
DeepVOG调用
load_DeepVOG()报错解决方案 该报错由TensorFlow/Keras版本与DeepVOG框架不兼容导致。DeepVOG官方适配环境为Python 3.6/3.7 + TensorFlow 1.15 + Keras 2.3.1,高版本TensorFlow 2.x的符号张量不支持直接调用__len__方法,会触发该错误。
注意DeepVOG不支持Python 3.8及以上版本,优先使用方案1可解决绝大多数兼容性问题
- 方案1:使用官方适配环境
安装Python 3.7版本的虚拟环境,依次安装指定版本依赖:
安装完成后重新运行加载代码即可。pip install tensorflow==1.15 keras==2.3.1 pip install deepvog - 方案2:高版本TF2.x兼容运行
如果你需要在现有高版本TensorFlow环境下运行,在导入deepvog之前添加兼容代码:import tensorflow.compat.v1 as tf tf.disable_v2_behavior() from keras import backend as K K.set_image_data_format('channels_last') import deepvog model = deepvog.load_DeepVOG() - 方案3:源码适配修改
如果上述方案均无效,找到DeepVOG安装目录下的模型定义文件,将所有直接对张量调用len()的代码替换为K.int_shape(张量变量)[对应维度]即可,例如将len(input_tensor)改为K.int_shape(input_tensor)[0]。
内容的提问来源于stack exchange,提问作者kbr
相关产品推荐
相关产品推荐

