【4】数据类型转换、张量运算、数据格式转换

数据、代码等相关资料来源于b站日月光华老师视频,此博客作为学习记录。

一、数据类型转换

# 创建一个2×3大小的、0~1之间服从正态分布的tensor
t = torch.randn(2, 3)   
print(t)
print(t.dtype)   # t的数据类型

在这里插入图片描述
此时的t是float32类型,如果想改变数据类型,可使用**.type()**方法:

  1. float32转为float16
t1 = t.type(torch.float16)
print(t1)

在这里插入图片描述
可见,tensor的数据类型已改变。

2.float32转为int16

同理,int类型也可以:

t2 = t.type(torch.int16)
print(t2)

在这里插入图片描述
3. .long() 和 .float() 方法
.long() 方法自动转换为int64,.float() 方法则将数据类型转化为float32,这是最常用的类型。

t = torch.randn(2, 3)
t3 = t.long()
t4 = t.float()
print(t3)
print(t4)
print(t3.dtype)
print(t4.dtype)

【4】数据类型转换、张量运算、数据格式转换_第1张图片
相比前面.type()的方法更加快捷。

二、张量运算

与ndarray规则类似,广播到每个元素上进行计算:

t = torch.randn(2, 3)
print(t)
print(t+3)

【4】数据类型转换、张量运算、数据格式转换_第2张图片
并且也符合对应元素相加的原则。

t = torch.randn(2, 3)
t1 = torch.ones(2, 3)
print(t)
print(t + t1)
print(t.__radd__(t1))
print(t)

【4】数据类型转换、张量运算、数据格式转换_第3张图片
可见t.__add__的方法和t+t1方法对应元素相加结果是一样的,并且没有改变t本身的值。

# 绝对值abs,求均值mean,累加cumsum,乘multiply,除divide等都可直接调用,不改变t本身的大小
print(t)
print(t.abs()) # 求绝对值
print(t)

【4】数据类型转换、张量运算、数据格式转换_第4张图片

t = torch.randn(2, 3)
t1 = t.T  # t的转置
print(t)
print(t1)
print(t.matmul(t.T))  # matmul表示矩阵乘法

【4】数据类型转换、张量运算、数据格式转换_第5张图片

三、数据格式转换

  1. tensor和python的浮点数的转换
t = torch.randn(2, 3)
x = t.sum()
print(x)   # .sum的结果是一个tensor
# 使用.item()方法可以将维度为0的tensor转化
print(x.item())

在这里插入图片描述

  1. tensor和ndarray的转换
t1 = torch.from_numpy(np.random.randn(3,4))
print(t1)
x = t1.numpy()
print(x)

【4】数据类型转换、张量运算、数据格式转换_第6张图片

你可能感兴趣的:(pytorch深度学习实例基础,python,numpy,深度学习)