[持续不定时更新]机器学习踩坑记

踩坑记

别问,问了都是泪啊…

1. tensorflow

Mac OS使用pip3安装tensorflow之后(主要是为了用tensorboard)结果import的时候还是No module found,解决办法:

  1. 找到安装的tensorflow的位置
  2. 添加路径
python3
import sys
sys.path

先通过这个找到python的位置
3. 然后在那个sites的文件夹目录下新建.pth文件,把tensorflow安装的位置添加进去即可

2. OMP: Error #15: Initializing libiomp5.dylib, but found libiomp5.dylib already initialized.

大概意思就是初始化libiomp5.dylib时发现已经初始化过了,这似乎是一个Mac OS 才存在的特殊问题。
解决方法 (允许副本存在):

import os
os.environ['KMP_DUPLICATE_LIB_OK']='True'

3. RuntimeError: set_sizes_contiguous is not allowed on a Tensor created from .data or .detach()

版本的问题
解决方法:将
v.data.resize_(data.size()).copy_(data)

替换成

v.resize_(data.size()).copy_(data)

4. backward() got an unexpected keyword argument ‘retain_variables’

出现这个报错的原因是,在新版本的Python下,原来的变量retain_variables被替换成了retain_graph。因此,在调用位置将其替换就可以了。

注:retain_graph的作用是为了避免内存在反向传播之后被释放,从而导致的无法第二次反向传播。因此需要将backward(retain_graph=True)。

5. IndexError: invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python

train_loss += loss.data[0] 是pytorch0.3.1版本代码,在0.4-0.5版本的pytorch会出现警告,不会报错,但是0.5版本以上的pytorch就会报错,总的来说是版本更新问题.

解决方法:

#将原语句:

train_loss+=loss.data[0]

#修改为:

train_loss+=loss.item()

6. The NVIDIA driver is too old PyTorch version that has been compiled with your version of the CUDA

原因:cuda版本与pytorch版本不匹配

解决办法

1.查看torch的版本

python 
import  torch
torch.__version__ 

2.查看torch对应的cuda的版本

torch.version.cuda

3.查看cuda是否可用

torch.cuda.is_available()

3.查看cuda的版本

cat /usr/local/cuda/version.txt

4.cuda版本与torch的cuda版本不一致的话

 卸载安装的torch: pip uninstall torch

 找对应版本的torch    网址: https://pytorch.org/get-started/previous-versions/

 安装命令也在网址里,重新安装torch 

7. ModuleNotFoundError: No module named ‘numpy.testing.decorators’

numpy版本不对:
pip3 uninstall numpy
pip3 install numpy==1.17.0

你可能感兴趣的:(tensorflow,python,机器学习)