最近 tf_keras 中遇到的一些坑
文件名格式不对产生 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
在同样的环境中重复载入模型
产生原因
在同样的环境中重复载入模型会导致没有指定名称的层的名字会发生改变,比如某个卷积层的定义如下:
x = layers.Conv2D(layer, (3, 3))(x)
那么,第一次载入这一层的名字可能就是 conv2d,再次在同样的环境中载入,名字可能就变成了 conv2d_1。
这一点要特别注意一下,特别是在 notebook 中运行的时候,很可能会让原本功能正常的方法报错。
另外,不用担心同一个环境中加载的不同模型有同样的层名会有问题,因为不在一个计算图里面,所以不会产生冲突。
解决方法
报错了就清除当前的上下文,notebook 里面就重启 kernel。
lr multiplier 无法正确读入自定义的优化器
产生原因
原模块引入 keras 的方法可能和现在的方法不匹配。
解决方法
把源文件复制到当前项目下,再改一下引入就正常了。
# 修改之后的方法
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 需要系统级的安装。
解决方法
# for mac
brew install graphviz
# for ubuntu
sudo apt-get install graphviz