机器学习的坑坑洼洼
资料来源:
<>
更新
1
2
3
42021.07.16 初始
2021.08.10
2021.09.04
2022.08.10
导语
兜兜转转又回到了机器学习方向,这里是不成篇的各种机器学习坑坑洼洼的合集.
AttributeError: module ‘keras.utils.generic_utils’ has no attribute ‘populate_dict_with_module_objects’
mnist 是机器学习的 hello world 但当重新输入熟悉的 from keras.datasets import mnist
突然报错…这万里长征第一步还没走,先报错了…
本地环境是: tensorflow-2.5 keras-2.4.3 python 3.9.5
参考 keras/issues/14632 似乎是 keras-2.4.3 和 tensorflow 2.5 兼容性有问题.
两种解决:
- 全部换用 tensorflow.keras ,初学阶段基本兼容.
- 卸载 tensorflow 和 keras,运行
pip install tensorflow --upgrade --force-reinstall
这样会强制安装与 tensorflow 兼容的 keras,这里会是 keras-nightly-2.5.0.
keras.utils.plot_model 报错
keras.utils.plot_model
可以非常方便将模型可视化.但是今天第一次使用一直报下面的错误…
1 | ('You must install pydot (`pip install pydot`) and install graphviz (see instructions at https://graphviz.gitlab.io/download/) ', 'for plot_model/model_to_dot to work.') |
没问题,按照提示开始
1 | pip install pydot |
然后安装 graphviz ,下载 win 预编译包,确定环境变量已经存在.
错误依旧…经过几轮排查,发现进入 虚拟环境\Lib\site-packages
压根没有 pydot 包…但是运行 pip install pydot
提示已经按照完成…重新按照 whl 也不行…
最终不得不在宿主机执行 pip install pydot
然后把
~\lib\site-packages\dot_parser.py
~\lib\site-packages\pydot-1.4.2.dist-info\*
~\lib\site-packages\pydot.py
拷贝到 虚拟环境\Lib\site-packages
此时不再有错误提示…
可能最后和虚拟环境有关?摸不着头脑…具体原因待日后细究.
强制 keras 使用 cpu
训练使用 gpu 一般比 cpu 要快很多,但是如果是不能调用 cuRNN 内核情况下,请尝试一些强制 cpu 训练,或许会快很多.
1 | import os |
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xac in position
有时读写文本文件总会遇到错误提示 gbk 编码错误.
这实际上是系统把不是 gbk 编码的文本以 gbk 解析的错误,谁让系统默认是中文呢…
open 方法添加 encoding='UTF-8'
即可
CUDA Linux Repository Key Rotation
这个是在重装 win11 后重建 cuda 环境时出现的,看错误提示是 cuda 的存储库密钥问题.
官方解决方案 -> Notice: CUDA Linux Repository Key Rotation
- 有很多种解决…因为 docker 镜像的基础版本太多了,总有一个能解决.
- 最后在我这里 fix 问题的是在
apt update
之前添加
1 | apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub |