nerf-pytorch执行示例报错:TypeError: type torch.cuda.FloatTensor not available. Torch not compiled with CUDA enabled. - MacStudio M1

nerf-pytorch安装后默认使用CUDA的张量进行运算。MacStudio M1下没有相应显卡和支持NVIDIA CUDA的库,所以报错。

1
2
3
4
5
6
7
8
% python run_nerf.py --config configs/lego.txt

Traceback (most recent call last):
File "/Users/d2l/nerf-hw/nerf-pytorch/run_nerf.py", line 876, in <module>
torch.set_default_tensor_type('torch.cuda.FloatTensor')
File "/Users/d2l/miniconda3/envs/nerf/lib/python3.9/site-packages/torch/__init__.py", line 323, in set_default_tensor_type
_C._set_default_tensor_type(t)
TypeError: type torch.cuda.FloatTensor not available. Torch not compiled with CUDA enabled.

解决方法:修改程序通过CPU运算。

1
2
3
4
5
6
7
8
9
10
11
12
# 进入nerf-pytorch目录编辑run_nerf.py,把torch.cuda.FloatTensor改成torch.FloatTensor
vi run_nerf.py

# diff如下
@@ -873,6 +873,6 @@ def train():


if __name__=='__main__':
- torch.set_default_tensor_type('torch.cuda.FloatTensor')
+ torch.set_default_tensor_type('torch.FloatTensor')

train()