踩坑记
别问,问了都是泪啊…
1. tensorflow
Mac OS使用pip3安装tensorflow之后(主要是为了用tensorboard)结果import的时候还是No module found,解决办法:
- 找到安装的tensorflow的位置
- 添加路径
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