我在PyTorch中列出了S形函数作为Tensor的输出
例如
output (type) = torch.Size([4]) tensor([0.4481, 0.4014, 0.5820, 0.2877], device='cuda:0',
当我在做二元分类时,我想把所有低于0.5的值变成0,高于0.5的值变成1。
传统上,对于NumPy数组,可以使用列表迭代器:
output_prediction = [1 if x > 0.5 else 0 for x in outputs ]
这是可行的,但是我必须稍后将output_prediction转换回Tensor才能使用
torch.sum(ouput_prediction == labels.data)
其中labels.data是标签的二元Tensor。
有没有办法把列表迭代器和Tensor一起使用?
3条答案
按热度按时间t40tm48m1#
说明:在pytorch中,可以直接使用
prob>0.5
得到一个torch.bool
类型的Tensor,然后通过.float()
转换为浮点类型。zazmityj2#
为什么不考虑使用一个 loopless的解决方案呢?也许下面这样就足够了:
zte4gxcn3#
result =torch.as_tensor((output - 0.5)〉0,dtype=torch.int32),将require_grad设置为False。
〉m = Torch .nn. S形()
〉损失=标准(m(产出),目标)