文章目录
- 一、张量是什么
- 二、张量的相关知识
-
- 1.空张量
-
- (1)一维空张量
- (2)二维空张量
- (3)三维空张量
- 2.初始化张量
- (1)使用给定数据来创建
- (2)使用随机值或常量值来创建
- 3.张量的算术运算
-
- (1)加法
- (2)减法
- (3)乘法
- (4)除法
- 4.张量的属性
-
- (1)形状(shape)
- (2)数据类型(dtype)
- (3)存储的设备(device)
- 5.张量的切片
- 6.张量的重塑
- 总结
一、张量是什么
张量(Tensor)是一种特殊的数据结构,与数组和矩阵十分相似。
二、张量的相关知识
1.空张量
空张量(Empty Tensor)是指没有存储数据的张量,也可以理解为只有形状(shape)属性的张量。
(1)一维空张量
eg:
import torch
x1 = torch.empty(2)
print(x1)
输出结果为:
(2)二维空张量
eg:
import torch
x2 = torch.empty(2,3)
print(x2)
输出结果为:
(3)三维空张量
eg:
import torch
x3 = torch.empty(2,2,3)
print(x3)
输出结果为:
2.初始化张量
(1)使用给定数据来创建
eg:
import torch
x3 = torch.empty(2,2,3)
print(x3)
输出结果为:
(2)使用随机值或常量值来创建
eg:
# 随机值
x = torch.rand(2,3)
# 常量0
y = torch.zeros(2,3)
# 常量1
z = torch.ones(2,3)
print(x)
print(y)
print(z)
输出结果为:
3.张量的算术运算
(1)加法
eg:
import torch
x = torch.rand(2,2)
y = torch.rand(2,2)
print(x)
print(y)
z1 = x + y
z2 = torch.add(x,y)
# 加了_的函数会执行就地操作,因此会修改它所应用的变量
y.add_(x)
print(z1)
print(z2)
print(y)
输出结果为:
注:
就地操作:将结果存储到操作数中的操作称为就地操作。用 _ 后缀表示。例如:x.t_() ,将更改 x 。
就地操作优点:可以节省一些内存。
就地操作缺点:在计算导数时可能会出现问题,会立即丢失历史记录。
(2)减法
eg:
import torch
x = torch.rand(2,2)
y = torch.rand(2,2)
print(x)
print(y)
z1 = x - y
z2 = torch.sub(x,y)
y.sub_(x)
print(z1)
print(z2)
print(y)
输出结果为:
(3)乘法
eg:
import torch
x = torch.rand(2,2)
y = torch.rand(2,2)
print(x)
print(y)
z1 = x * y
z2 = torch.mul(x,y)
y.mul_(x)
print(z1)
print(z2)
print(y)
输出结果为:
(4)除法
eg:
import torch
x = torch.rand(2,2)
y = torch.rand(2,2)
print(x)
print(y)
z1 = x / y
z2 = torch.div(x,y)
y.div_(x)
print(z1)
print(z2)
print(y)
输出结果为:
4.张量的属性
(1)形状(shape)
格式:张量名.shape()
eg:
import torch
x = torch.rand(2,2,dtype = torch.float)
print(x.size())
输出结果为:
(2)数据类型(dtype)
格式:张量名.dtype
eg:
import torch
x = torch.rand(2,2,dtype = torch.float)
print(x.dtype)
输出结果为:
(3)存储的设备(device)
格式:张量名.device
eg:
import torch
x = torch.rand(2,2,dtype = torch.float)
print(x.device)
输出结果为:
5.张量的切片
eg:
import torch
x = torch.rand(5,3)
print(x)
# 输出张量的第三行
print(x[2,:])
# 输出张量的第二列
print(x[:,1])
# 的第四行第三个单元素张量
print(x[3,2])
# 输出单元素张量的实际值
print(x[3,2].item())
输出结果为:
6.张量的重塑
通过view()函数来进行张量的重塑。-1表示不确定的数,如果已确定重塑的行数或列数中的一个,不确定重塑的行数或列数的另一个,那么不确定的地方就写-1。
注:重塑的行数和列数不能都写为-1。
eg:
import torch
x = torch.rand(4,4)
print(x)
# 重塑为一维
y = x.view(16)
print(y)
# 重塑为二维
y = x.view(8,-1)
print(y.size())
print(y)
y1 = x.view(-1,8)
print(y1.size())
print(y1)
输出结果为:
总结
以上就是今天要讲的内容,本文简要介绍了张量以及张量的相关知识。