详解pytorch tensor和ndarray转换相关总结
在使用pytorch的时候,经常会涉及到两种数据格式tensor和ndarray之间的转换,这里总结一下两种格式的转换:
1.tensorcpu和tensorgpu之间的转化:
tensorcpu转为tensorgpu:
tensor_gpu=tensor_cpu.cuda()
>>>tensor_cpu=torch.ones((2,2)) tensor([[1.,1.], [1.,1.]]) >>>tensor_gpu=tensor_cpu.cuda() tensor([[1.,1.], [1.,1.]],device='cuda:0')
tensorgpu转为tensorcpu:
tensor_cpu=tensor_gpu.cuda()
>>>tensor_gpu.cpu() tensor([[1.,1.], [1.,1.]])
2.tensorcpu和ndarray之间的转化:
tensorcpu转为ndarray:
>>>np_array=tensor_cpu.numpy() array([[1.,1.], [1.,1.]],dtype=float32)
ndarray转为tensorcpu:
注:ndarray的默认精度为64位,Tensor的默认精度位32位,所以通过Tensor直接转换的话,精度会转换到32位,若通过from_numpy的方式,则会保留原来64位精度
>>>torch.from_numpy(np.ones((2,2))) tensor([[1.,1.], [1.,1.]],dtype=torch.float64) >>>torch.Tensor(np.ones((2,2))) tensor([[1.,1.], [1.,1.]])
3.tensorcpu和scalar之间的转化:
如果只是训练了一个简单的分类网络,对单个样本的输出会是一个标量(scalar)
>>>torch.ones((1,1)).item() 1.0
通过一张图说明三者的转化方式:
到此这篇关于详解pytorchtensor和ndarray转换相关总结的文章就介绍到这了,更多相关pytorchtensor和ndarray转换内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。