机器学习的坑坑洼洼

-

  • 资料来源:

    <>

  • 更新

    1
    2
    3
    4
    2021.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
2
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"

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
2
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub