-
TypeError: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
Traceback (most recent call last):
File "train.py", line 436, in <module>
train(hyp) # train normally
File "train.py", line 330, in train
results, maps = test.test(cfg,
File "/home/roboticsai/anzhiqiang/yolov3/test.py", line 173, in test
plot_images(imgs, output_to_target(output, width, height), paths=paths, names=names, fname=f) # predictions
File "/home/roboticsai/anzhiqiang/yolov3/utils/utils.py", line 821, in output_to_target
return np.array(targets)
File "/home/roboticsai/.virtualenvs/azq/lib/python3.8/site-packages/torch/tensor.py", line 642, in __array__
return self.numpy()
TypeError: can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.
解决方法:
打开/home/roboticsai/.virtualenvs/azq/lib/python3.8/site-packages/torch/tensor.py文件。在两个return self后边加上cpu()。
- KeyError: 'lrf'
解决方法:
根据'lrf'所在代码
lf = lambda x: ((1 + math.cos(x * math.pi / epochs)) / 2) * (1 - hyp['lrf']) + hyp['lrf']
找到调用该参数的函数,即hyp ,找到下面这段代码
parser.add_argument('--hyp', type=str, default='data/hyp.scratch.yaml', help='hyperparameters path')
然后再找到data/hyp.scratch.yaml文件
把'lrf'函数按照文件内的格式加进去。