【keras-YOLOv3】训练自己的数据集问题总结
1.Adam importError
ImportError: cannot import name ‘Adam‘ from ‘keras.optimizers‘
原因: keras 库更新后包导入方式改变,Adam 导入已更改。 解决方案: 将from keras.optimizers import Adam改为如下:
from keras.optimizers import adam_v2
调用: adam_v2.Adam(lr=0.001, beta_1=XX, beta_2=XX, epsilon=XX)
2.UnicodeDecodeError: ‘gbk’
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x8d in position 79: illegal multibyte sequence
原因: python中默认的编码方式是 “ gbk ”,Windows的文件默认的编码方式是 “ utf-8 ”
解决方案: 设置代码中所有打开文件方式encoding=‘UTF-8’ 例如:
open(classes_path,encoding='UTF-8')
3.‘keras.backend’ has no attribute ‘control_flow_ops’
AttributeError: module ‘keras.backend’ has no attribute ‘control_flow_ops’
原因: Keras没办法调用control_flow_ops 解决方案: 直接用tensorflow调用, import tensoflow as tf 改为:
_, ignore_mask = tf.while_loop(lambda b,*args: b < m, loop_body, [0, ignore_mask])
4.convert.py 不生成对应的 .h5文件
在python终端执行命令convert.py yolov3.cfg yolov3.weights model_data/yolo.h5,没有报错,没有生成新的权重文件
百思不得其解,我在Anaconda命令行执行命令,报错找不到xx.dll文件,查找原因后得出是keras和tensorflow版本不对应问题,重新下载tensorflow,执行对应命令如下,在Anaconda中成功生成.h5文件。 然而,在python终端还是无法生成,查看File-settings 右边的包还是之前的高级版本(但是我已经卸载了这个版本就很奇怪),下载的匹配的版本在pycharm中找不到,在python的终端还是无法生成…找了很多帖子之后,发现最终原因很可能是: Anaconda下下载的包无法导入python,因此终端执行命令时版本不匹配,无法生成文件,这个问题先放在这儿,改天好好研究解决… 使用Anaconda下生成的keras权重文件进行训练。
5.未解决
tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine
tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'cudart64_110.dll'; dlerror: cudart64_110.dll not found
没有找到解决办法,但是不影响训练
|