张量的元素类型
与列表不同的是,张量只能用来处理数值类型,不像Python列表,什么类型都可以往里面放,下面就是tensor中可以处理的数值类型
- torch.float32 或 torch.float 32位浮点数
- torch.float64 或 torch.double 64位双精度浮点数
- torch.float16 或 torch.half 16位半精度浮点数
- torch.int8 8位有符号整数
- torch.uint8 8位无符号整数
- torch.int16 或 torch.short 16位有符号整数
- torch.int32 或 torch.int 32位有符号整数
- torch.int64 或 torch.long 64位有符号整数
- torch.bool 布尔类型
不同的元素类型直接影响tensor在内存中所占用的内存块大小,比如32位浮点数就占用32个bite,而64位则占用64个bite,所以在需要优化模型性能的时候可以考虑降低精度。
对于PyTorch来说,如果不做特殊处理,在构建浮点数tensor时默认使用float32,也就是32位浮点数,在构建整数tensor的时候使用的是int64,64位有符号整数
关于元素类型的操作:
除了默认情况以外,我们当然可以手动的来修改元素类型。比如在构建tensor的时候在后面加上dtype参数,并指定具体的类型
double_points = torch.ones(10, 2, dtype=torch.double)
short_points = torch.tensor([[1, 2], [3, 4]], dtype=torch.short)
对于tensor也有一个dtype方法,可以用来查看当前tensor的元素类型
short_points.dtype
outs:tor