错题本
暂且开辟一块文章记录遇到过的 error 和解决方法。杂七杂八的错误先放到一篇文章里,随着之后的积累再进行分类整理。
0x01
报错信息
$\color{blue}{\text{InvalidArgumentError: Matrix size-incompatible: In[0]: [1,7], In[1]: [1,7]}}$
复现
1 | model.compile(loss='binary_crossentropy', optimizer=adam, metrics=['accuracy',precision,recall]) |
可能原因
model.complie() 中 Loss 参数的形状错误。
解决方法
修改传入 Loss 的 tensor 的形状。
解决进度 : $\color{green}{已解决}$
0x10
报错信息
$\color{blue}{\text{Failed to get convolution algorithm. This is probably because cuDNN failed to initialize,}}$
$\color{blue}{\text{so try looking to see if a warning log message was printed above. [Op:Conv2D]}}$
复现
配置 CUDA 和 tensorflow 时出现。
在使用 tf.test.if_gpu_avaliable() 时显示 GPU 可以使用,但是在编译的时候提示此错误。
可能原因
内存不足。tensorflow 默认会使用全部的内存资源,因此可能会导致提示内存不足。
解决方法
通过以下方式开启按需分配内存
方法一:
指定某块 GPU 运行程序。但我的电脑只有一块 GPU,所以这个方法不可行
1 | import os |
方法二:
限制 GPU 资源使用
1 | import tensorflow as tf |
以上是网上的解决方法。但出于未知原因,仍然会报相同的错误。
解决进度 : $\color{red}{未解决}$
0x11
报错信息
$\color{blue}{\text{Error occurred when finalizing GeneratorDataset iterator: Failed precondition:}}$ $\color{blue}{\text{Python interpreter state is not initialized. The process may be terminated. [[{{node PyFunc}}]]}}$复现
Python: 3.8
GPU: RTX3070
CUDA: 11.2
cudnn: 8.1
tensorflow-gpu/cpu: 2.5.3
在训练 ASRT 模型时会出现此错误
原因分析
网上找到的原因大概有这么几种:
- 定义卷积层第一层时,模型实际输入的
input_size与定义时设定的input_shape不符或未定义造成。 train_generator和validate_generator相关参数没有保持一致,比如batch_size,target_size,class_mode等- 本身配置限制,
batch_size改小试试,甚至改到 1 试试。 - 上一次程序运行没有彻底结束。
但是这几种都不是我的程序问题所在。这里其实还有一种情况会导致此 bug:
- python 版本为 3.8,与 tensorflow 版本不符
解决方法
Python 退版本至 3.7
解决进度 : $\color{green}{已解决}$






