王色网站,电脑当服务器做网站,wordpress签到系统,建网站的步骤及方法在使用torch.nn.functional模块时#xff0c;需要导入包#xff1a;
from torch.nn import functional 以下是常见激活函数的介绍以及对应的代码示例#xff1a;
tanh (双曲正切) 输出范围#xff1a;(-1, 1) 特点#xff1a;中心对称#xff0c;适合处理归一化后的数据… 在使用torch.nn.functional模块时需要导入包
from torch.nn import functional 以下是常见激活函数的介绍以及对应的代码示例
tanh (双曲正切) 输出范围(-1, 1) 特点中心对称适合处理归一化后的数据。 公式 import torch
x torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
y torch.nn.funcationl.tanh(x)
print(y) # 输出tensor([-0.9640, -0.7616, 0.0000, 0.7616, 0.9640])
sigmoid (S形函数) 输出范围(0, 1) 特点用于将输入映射到概率值但可能会导致梯度消失问题。 公式 y torch.nn.funcational.sigmoid(x)
print(y) # 输出tensor([0.1192, 0.2689, 0.5000, 0.7311, 0.8808])
SiLU (Sigmoid Linear Unit也称Swish) 输出范围(0, x) 特点结合了线性和非线性特性效果较好。 公式silu(x) x * sigmoid(x) y torch.nn.funcationl.silu(x)
print(y) # 输出tensor([-0.2384, -0.2689, 0.0000, 0.7311, 1.7616])
GELU (Gaussian Error Linear Unit) 输出范围接近ReLU但更加平滑。 特点常用于Transformer模型。 公式近似为gelu(x) ≈ x * sigmoid(1.702 * x) y torch.nn.functional.gelu(x)
print(y) # 输出tensor([-0.0454, -0.1588, 0.0000, 0.8413, 1.9546])
ReLU (Rectified Linear Unit) 输出范围[0, ∞) 特点简单高效是最常用的激活函数之一。 公式relu(x) max(0, x) y torch.nn.funcationl.relu(x)
print(y) # 输出tensor([0., 0., 0., 1., 2.])
ReLU_ (In-place ReLU) 输出范围[0, ∞) 特点修改原张量而不是生成新的张量节省内存。 x.relu_() # 注意会改变x本身
print(x) # x的值被修改为tensor([0., 0., 0., 1., 2.])
Leaky ReLU 输出范围(-∞, ∞) 特点允许负值有较小的输出避免死神经元问题。 公式leaky_relu(x) x if x 0 else alpha * x x torch.tensor([-2.0, -1.0, 0.0, 1.0, 2.0])
y torch.nn.functional.leaky_relu(x, negative_slope0.01)
print(y) # 输出tensor([-0.0200, -0.0100, 0.0000, 1.0000, 2.0000])
Leaky ReLU_ (In-place Leaky ReLU) 特点和ReLU_一样会修改原张量。 x.leaky_relu_(negative_slope0.01)
print(x) # x的值被修改
Softmax 输出范围(0, 1)且所有输出的和为1。 特点常用于多分类任务的最后一层。 公式 x torch.tensor([1.0, 2.0, 3.0])
y torch.nn.functional.softmax(x, dim0)
print(y) # 输出tensor([0.0900, 0.2447, 0.6652])
Threshold 输出范围手动设置的范围。 特点小于阈值的数被置为设定值大于等于阈值的数保持不变。 x torch.tensor([-1.0, 0.0, 1.0, 2.0])
y torch.nn.functional.threshold(x, threshold0.5, value0.0)
print(y) # 输出tensor([0., 0., 0., 2.])
Normalize 功能将张量的值标准化到指定范围。 公式normalize(x) x / max(||x||, eps) x torch.tensor([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
y torch.nn.functional.normalize(x, p2, dim1)
print(y) # 输出标准化到单位向量