torch.linspace

torch.linspace(start, end, steps=100, out=None) → Tensor

返回一个1维张量,包含在区间start和end上均匀间隔的step个点。

输出张量的长度由steps决定。

$\mathrm{(start,start+\frac{end-start}{steps-1},\ldots,start+(steps-2)*\frac{end-start}{steps-1},end)}$

>>> torch.linspace(3, 10, steps=5)
tensor([  3.0000,   4.7500,   6.5000,   8.2500,  10.0000])
>>> torch.linspace(-10, 10, steps=5)
tensor([-10.,  -5.,   0.,   5.,  10.])
>>> torch.linspace(start=-10, end=10, steps=5)
tensor([-10.,  -5.,   0.,   5.,  10.])
>>> torch.linspace(start=-10, end=10, steps=1)
tensor([-10.])

torch.cumsum

torch.cumsum(*input*, *dim*, ***, *dtype=None*, *out=None*) → [Tensor](<https://pytorch.org/docs/stable/tensors.html#torch.Tensor>)

返回维度dim中输入元素的累计和。

$y_i=x_1+x_2+x_3+\cdots+x_i$

>>> a = torch.randn(10)
>>> a
tensor([-0.8286, -0.4890,  0.5155,  0.8443,  0.1865, -0.1752, -2.0595,
         0.1850, -1.1571, -0.4243])
>>> torch.cumsum(a, dim=0)
tensor([-0.8286, -1.3175, -0.8020,  0.0423,  0.2289,  0.0537, -2.0058,
        -1.8209, -2.9780, -3.4022])

torch.cuda.amp.autocast()

Pytorch自动混合精度的计算:torch.cuda.amp.autocast-CSDN博客

torch.cuda.amp.autocast是PyTorch中一种混合精度的技术(仅在GPU上训练时可使用),可在保持数值精度的情况下提高训练速度和减少显存占用。

# 导入相关库
import torch
from torch.cuda.amp import autocast
 
# 定义一个模型
class MyModel(torch.nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.linear = torch.nn.Linear(10, 1)
 
    def forward(self, x):
        with autocast():
            x = self.linear(x)
        return x
 
# 初始化数据和模型
x = torch.randn(1, 10).cuda()
model = MyModel().cuda()
 
# 进行前向传播
with autocast():
    output = model(x)
 
# 计算损失
loss = output.sum()
 
# 反向传播
loss.backward()

torch.stack

沿着一个新维度对输入张量序列进行连接。 序列中所有的张量都应该为相同形状。

把多个2维的张量凑成一个3维的张量;多个3维的凑成一个4维的张量…以此类推,也就是在增加新的维度进行堆叠outputs = torch.stack(inputs, dim=0) → Tensor

A = torch.tensor([[1, 2, 3],
                  [4, 5, 6],
			        	  [7, 8, 9]])
B = torch.tensor([[12, 22, 33],
			        	  [44, 55, 66],
                  [77, 88,99]])

第0维