Python RuntimeError:应为标量类型Double的对象,但为参数#2'获取标量类型Float;其他';打电话给_th_max

Python RuntimeError:应为标量类型Double的对象,但为参数#2'获取标量类型Float;其他';打电话给_th_max,python,pytorch,tensor,torch,torchvision,Python,Pytorch,Tensor,Torch,Torchvision,文件 “/home/jake/venv/lib/python3.7/site packages/torchvision/models/detection/rpn.py”, 第274行,将_目标_分配给_锚 match_quality_matrix=self.box_相似性(gt_框,每个图像的锚定)文件 “/home/jake/venv/lib/python3.7/site packages/torchvision/ops/box.py”, 第153行,在“借据”框中 lt=torch.max(

文件 “/home/jake/venv/lib/python3.7/site packages/torchvision/models/detection/rpn.py”, 第274行,将_目标_分配给_锚 match_quality_matrix=self.box_相似性(gt_框,每个图像的锚定)文件 “/home/jake/venv/lib/python3.7/site packages/torchvision/ops/box.py”, 第153行,在“借据”框中 lt=torch.max(boxes1[:,None,:2],boxes2[:,:2])#[N,M,2]运行时错误:应为标量类型Double的对象,但获得标量 在调用_th_max时,为参数#2“other”键入Float

出现以下错误,以下是类型

annotations-> [{'boxes': tensor([[131.5124, 169.4232, 165.8235, 209.7217],
        [157.2659, 185.7604, 199.0850, 210.4478],
        [184.4726, 171.3594, 211.5178, 210.3267],
        [170.5867, 154.1751, 211.7600, 188.7858],
        [162.8364, 156.2324, 182.1313, 186.7285],
        [131.2702, 149.8185, 149.4349, 172.3276],
        [192.0614, 140.5002, 208.4500, 155.2642],
        [165.2583, 140.5002, 188.2670, 158.0476],
        [169.5371, 131.9080, 193.3531, 151.1497],
        [131.1895, 133.2392, 140.1507, 156.3534]], device='cuda:0',
       dtype=torch.float64), 'labels': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1], device='cuda:0'), 'area': tensor([1382.6857, 1032.4053, 1053.8795, 1425.0382,  588.4218,  408.8705,
         241.9614,  403.7413,  458.2574,  207.1317], device='cuda:0'), 'iscrowd': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], device='cuda:0')}]

我认为盒子的类型是浮动的。这导致了如何将其修复为双倍的问题?

没有任何上下文,很难判断

但解决方法是为每个张量调用
mytensor=mytensor.double()
,以及
mymodel=mymodel.double()
将数据和模型转换为相同的双精度类型。
或者,您可以将浮动类型的
.double()
替换为
.float()
。这两种方法都应该正常工作

没有任何上下文很难判断

但解决方法是为每个张量调用
mytensor=mytensor.double()
,以及
mymodel=mymodel.double()
将数据和模型转换为相同的双精度类型。 或者,您可以将浮动类型的
.double()
替换为
.float()
。这两种方法都应该正常工作