torch.FloatTensor,torch.Tensor,torch.tensor,torch.as_tensor,torch.from_numpy的区别与连系总结

1. torch.FloatTensor 与 torch.Tensor —(类, 深拷贝)

https://pytorch.org/docs/stable/tensors.html#torch.Tensor

其实这两个是一个东西,
在这里插入图片描述
其实这两个是一个东西,都是用来创建一个float32 的Tensor 对象。输入可以是list,tuple,numpy等。注意他们是深copying

2. torch.Tensor —(类,深copying), torch.tensor —(函数,深copying)->Tensor

https://pytorch.org/docs/stable/generated/torch.tensor.html#torch.tensor

在这里插入图片描述

前面已经介绍过了,torch.Tensor是一个类用于创建float32 的Tensor 对象。而torch.tensor是一个函数,函数返回的是torch.Tensor这个类型对象,数据类型可通过dtype参数指定,包括device。注意torch.tensor也是深copy。

3. torch.as_tensor —(函数,浅copying)->Tensor, torch.from_numpy —(函数,浅copying)->Tensor

torch.as_tensor:
https://pytorch.org/docs/stable/generated/torch.as_tensor.html
在这里插入图片描述

torch.from_numpy:
https://pytorch.org/docs/stable/generated/torch.from_numpy.html#torch.from_numpy
在这里插入图片描述

与前面不同的是,torch.as_tensor 和 torch.from_numpy都是浅copying,他们也是返回一个torch.Tensor对象。torch.from_numpy 只是torch.as_tensor(numpy,dtype=None,device=None)的一个特例。也就是说torch.from_numpy数据类型只能和原data的数据类型保持一致,因为没有dtype参数给他修改,而且返回的一定是cpu Tensor,因为GPU上没有numpy。

4. 总结

torch.FloatTensor:    类, 深copy。可更改类型,device
torch.Tensor:       同torch.FloatTensor
torch.tensor:        函数,深copy。可更改类型,device
torch.as_tensor:     函数,浅copy。不可更改类型,device
torch.from_numpy:   函数,浅copy。不可更改类型,device

共同点:最终都创建一个torch.Tensor对象

猜你喜欢

转载自blog.csdn.net/m0_59156726/article/details/133277226