上图中是一个张量embeds,打开其内部存储空间,我们可以看到内部的构成。在PyTorch中,Tensor
具有许多属性和方法。以下是其中一些关键的属性和方法:
属性:
-
H:
在标准的PyTorch API中并没有直接表示为.H
的属性,但在数学或某些库(如NumPy)中,.H
通常代表共轭转置(Conjugate Transpose),也称为Hermitian conjugate。在处理复数张量时,如果需要进行共轭转置操作,在PyTorch中应先使用.conj()
方法获取复共轭,然后用.T
进行转置,即tensor.conj().T
。 -
T:
.T
属性用于转置(Transpose)张量,它会改变张量的维度顺序。例如,对于二维张量(矩阵),转置会交换行和列的位置。 -
返回一个与原张量共享相同存储区的新张量视图,通常用于直接访问底层数据而不涉及计算历史。.data
: -
返回一个.device
:torch.device
对象,表示张量所在设备(CPU或GPU)。 -
返回一个.dtype
:torch.dtype
对象,代表张量元素的数据类型(如 torch.float32, torch.long 等)。 -
如果该张量是需要求梯度的一部分,则返回与该张量相关的梯度张量;否则为.grad
:None
。 -
返回一个布尔值,表明此张量是否参与自动求导过程。.requires_grad
: -
返回一个包含张量各维度大小的元组,表示张量的形状。.shape
或.size()
: -
返回一个元组,表示沿着各个维度移动一个元素所需的步长。.stride
: -
判断当前张量是否连续存储在内存中。.is_contiguous()
: -
在某些特殊情况下,如使用MKLDNN等优化库时,描述张量的布局方式。.layout
(高级用法):
方法:
-
改变张量的维度大小,但不改变其实际数据内容。.view(*shape)
或.reshape(*shape)
: -
对张量进行转置操作。.transpose(dim0, dim1)
或.t()
: -
将张量转移到指定设备上或者更改数据类型。.to(device, dtype=None, non_blocking=False)
: -
创建一个与原张量有相同数据的新张量,数据独立于原张量存储。.clone()
: -
从源张量拷贝数据到当前张量。.copy_(src)
: -
创建一个新的张量,与原张量数据相同但切断了计算图中的依赖关系。.detach()
: -
转换张量为NumPy数组。.numpy()
: -
计算张量沿指定维度的和、平均数等统计量。.sum(dim=None, keepdim=False)
、.mean(dim=None, keepdim=False)
等统计函数: -
直接对张量内部数据进行操作,例如清零所有元素或填充特定值。.zero_()
、.fill_(value)
等修改张量数值的方法: -
对于深度学习模型训练相关的:
.backward()
:执行反向传播计算梯度。.requires_grad_(requires_grad=True)
:动态地设置张量是否要求梯度。
这些只是一部分基本和常用的属性及方法,实际上还有很多其他功能丰富的成员函数,可以根据实际需求查阅官方文档以获取完整列表和详细说明。