最近 tf_keras 中遇到的一些坑

Author Avatar
Patrick 1月 07, 2020

文件名格式不对产生 OSError

产生原因

在使用 model.save(model_path) 的时候,由于 model_path 格式不对,而产生了 OSError,一个不对的格式是:

Tue-Jan-7-16-59-41-2020.sos_model.035-mae.0.1543.hdf5

可能是这个 .0. 导致了这个错误。

解决方法

把 mae 后面的 . 改成 - 即可,即:

Tue-Jan-7-16-59-41-2020.sos_model.035-mae-0.1543.hdf5

在同样的环境中重复载入模型

产生原因

在同样的环境中重复载入模型会导致没有指定名称的层的名字会发生改变,比如某个卷积层的定义如下:

1
x = layers.Conv2D(layer, (3, 3))(x)

那么,第一次载入这一层的名字可能就是 conv2d,再次在同样的环境中载入,名字可能就变成了 conv2d_1。

这一点要特别注意一下,特别是在 notebook 中运行的时候,很可能会让原本功能正常的方法报错。

另外,不用担心同一个环境中加载的不同模型有同样的层名会有问题,因为不在一个计算图里面,所以不会产生冲突。

解决方法

报错了就清除当前的上下文,notebook 里面就重启 kernel。

lr multiplier 无法正确读入自定义的优化器

产生原因

原模块引入 keras 的方法可能和现在的方法不匹配。

解决方法

把源文件复制到当前项目下,再改一下引入就正常了。

1
2
# 修改之后的方法
import tensorflow.python.keras.optimizers as optimizers

plot_model 报缺少 graphviz 的错

直接运行 plot_model 的时候会报缺少依赖的错误,安装了相关依赖之后还有相同的错误,如下所示:

keras ImportError: Failed to import pydot. You must install pydot and graphviz for pydotprint to work.

产生原因

graphviz 需要系统级的安装。

解决方法

1
2
3
4
5
# for mac
brew install graphviz

# for ubuntu
sudo apt-get install graphviz