【keras-YOLOv3】 训练自己的数据集问题总结

【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

原因:
打开txt文件的错误,python中默认的txt文件编码方式是 “ 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. Input Source operations connected to node conv2d_7

Errors may have originated from an input operation. Input Source operations connected to node conv2d_7/Conv2D/ReadVariableOp:…

版本问题,注意查看你的代码官网要求的tensorflow版本和与之对应的keras版本,重新配置环境

6.get_session() 错误 Subshape must have computed start >= end…错误

两个我遇到过的问题,参考这个博主的一篇文章
这个链接

7.No module named ‘tensorflow.tools’

from tensorflow.tools.docs import doc_controls
ModuleNotFoundError: No module named ‘tensorflow.tools’

emmmm,查了很多方法,试着降低tensorflow版本都没用,最后在
路径E:\Anaconda3\Lib\site-packages\tensorflow\下查看,没有名为tools的文件夹,但有一个Tools,所以将文件夹的名字改为tools,解决了,泪目。

8.module ‘tensorflow.compat.v2’ has no attribute ‘_internal’

执行命令:

pip uninstall keras -y
pip uninstall keras-nightly -y
pip uninstall keras-Preprocessing -y
pip uninstall keras-vis -y
pip uninstall tensorflow -y

pip install tensorflow == 2.3.0
pip install keras == 2.4

原回答
一番操作问题是解决了,但是不是很明白为蛇么,之前安装的tf和keras版本也是匹配的,不知道是卸载一些东西解决了这个bug,还是安装上述指定版本的keras解决了问题。。。

9.AttributeError: module ‘tensorflow.python.framework.ops’ has no attribute ‘_TensorLike’

这个链接
我用了第一种方法解决了

10.TypeError: Tensor is unhashable. Instead, use tensor.ref() as the key.

K.learning_phase(): 0
TypeError: Tensor is unhashable. Instead, use tensor.ref() as the key.

解决办法:

import tensorflow
tensorflow.compat.v1.disable_v2_behavior()

禁用tensorflow 2.x的动作

11.其它

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

没有找到解决办法,但是不影响训练
在这里插入图片描述

一些后记,有感而发,就写在这里吧…
跑代码过程中的百分之八十问题都是配置环境问题,有时源代码中的函数可能调用的了tensorflow 1.x中的某个函数,而新版本中没有这个函数或者函数调用方式改变就会有错误,又或者你安装了高级版本没有卸载干净或者别的什么问题,产生兼容错误,,,就十分泪目。所以在跑数据之前一定要按官网上给出的环境配置来做好准备工作,才能省下不必要的庸庸碌碌。

在训练自己的数据集之前学习别人的博客,有的大佬比较专业,所以一些细节一笔带过,对于我这种小白来说就迷惑,只能多看其他同类博客搞清楚问题。但有一个问题就是,看了一篇keras-YOLOv3训练数据集,觉得自己可以,于是乎下载源码下来,先运行一下结果出现了问题,对自己感到怀疑。又看到有很多darknet-master的例子,又下载源码去试试,最后又感觉这些都不足够详细,又下载大佬改过做过注释的代码,看了视频讲解来调试,结果又出现无法预料的错误,就又反复横跳,又去调试原来的代码…浪费了很多时间。所以说选定了一个代码还是要坚定一点,感到迷惑的地方多找找讲解,还要触类旁通,每个人跑数据都会有千千万万个不同的bug,有时你完全按照别人的教程来也会出现没有过的问题,这是就要多搜索,找不到一模一样的问题解答就找相似类问题解决办法,多尝试,有时,也许你为了解决一个问题改了两句代码,这个bug解决了但是下个bug就是你改的这两句导致的,只能不断debug,debug,debug…至少代码终于跑起来的那刻是有成就感的。
与君共勉。。。

今天你debug了吗?
在这里插入图片描述

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值