跑“Looking-to-Listen-at-the-Cocktail-Party”程序时出现的BUG及解决办法
Looking-to-Listen-at-the-Cocktail-Party
1.has no attribute ‘_TensorLike’
原因
- 这个错误的原因可能是
keras和tensorflow的版本不匹配。
解决办法
- 网上的办法比较多,我把
tensorflow的版本降低解决了这个问题keras==2.3.1tensorlow==2.0.0
2.ValueError:bad marshal data(unkonwn type code)
原因
这是在加载FaceNet的预训练模型facenet_keras.h5时出现的问题,主要原因是keras版本和模型需要的keras版本不匹配。事实上在我这的原因似乎是Python的版本不匹配导致的?这个项目Python==3.7,我是3.8的Python。
解决办法
重装虚拟环境,用Python==3.7重装所有包
3.KeyError:‘acc’和KeyError:‘val_acc’
1 | plt.plot(history.history['acc']) |
原因
- 在编译模型时,可能没有添加
acc作为度量 - 版本不匹配
解决办法
-
对于度量问题
1
model.compile(optimizer=..., loss=..., metrics=['accuracy'])#可能没有metrics=['accuracy']导致问题
-
对于版本问题
keras库老版本中参数是acc和val_acckeras库新版本中参数是accuracy和val_accuracy
4.Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure
绘图的时候出现这个问题。
解决办法
在所有导入包后面加上
1 | import matplotlib as mpl |
但是需要有tkinter包,在Linux中需要
1 | sudo apt-get install python3-tk |
5.ValueError:Unkonwn loss function:loss_func
加载模型的时候出现了这个错误。
原因
(36条消息) ValueError: Unknown loss function_dugudaibo的博客-CSDN博客
主要是因为使用了自定义的loss_function而keras里没有这个loss_function,所以需要手动的指定损失函数。
解决办法
1 | #train.py 69行 |
然而,值得注意的是,这里自定义的损失函数使用了函数嵌套,loss_func实际上是audio_loss的内层函数。如果直接"loss_func":audio_loss会报错。参考python中函数嵌套、函数作为变量以及闭包的原理 - 夏晓旭 - 博客园 (cnblogs.com)。可以知道通过audio_loss()调用内层函数的引用,也就是相当于loss_func。
6.Error:8nQBG5hvjpk:YouTube said:Unable to extract video data
原因
不知道
解决办法
跟新youtube-dl:“Updating youtube-dl helped me. Depending on the way you installed it, here are the commands”。所以要根据具体安装的方法跟新:
youtube-dl --update(self-update)pip install -U youtube-dl(Python)brew update youtube-dl(macOS+homebrew)choco upgrade youtube-dl(windows+Chocolatey)
7.ValueError:To call multi_gpu_model with gpu=2, we expect the following devices to be available: [‘/cpu:0’, ‘/gpu:0’, ‘/gpu:1’]. However this machine only has: [‘/cpu:0’]
在使用多GPU进行训练的时候,出现这个问题。
这个问题可以通过直接用CPU训练来避免,但是CPU速度太慢,两天只能训练3个epoch,我设置的100个epoch要训练2个月!!!
在解决这个问题的过程中也出现了很多其他问题。
解决这个问题,需要:
tensorflow-gputensorflow-gpu和cuda版本相匹配
7.1 No module named tensorflow
原因
我之前下载的是tensorflow==2.0.0,而没有下载tensorflow-gpu。从网上的资料来看,前者也是可以使用GPU的,但是我还是重新下载了GPU的版本。
但当我下载好tensorflow-gpu然后删除tensorflow后出现了上述错误。
解决办法
(37条消息) 电脑上同时安装了tensorflow和tensorflow-gpu,如何默认使用tensorflow-gpu_NuerNuer的博客-CSDN博客
卸载并重新安装tensorflow-gpu即可解决。
7.2 检测不到GPU的tensorflow
1 | import tensorflow as tf |
原因
(37条消息) 2021最新:TensorFlow各个GPU版本CUDA和cuDNN对应版本整理(最简洁)_K1052176873的博客-CSDN博客
原因是tensorflow-gpu和cuda版本不匹配。
这也是直接导致问题7的原因
解决办法
CUDA版本是8.1.0,对应tensorflow==2.1.0/2.2.0/2.3.0,所以要将tensorflow进行跟新
7.3 Warning: Could not load dynamic library ‘libnvinfer.so.6’
原因
没有安装TensorRT
解决办法
- 删了
tensorflow==2.1.0,重新安装或者安装更高版本 - 安装
TensorRT
1 | sudo apt-get install -y --no-install-recommends libnvinfer6=6.0.1-1+cuda10.1\ |






