谁能告诉我上述算法是如何工作的。理论上我明白了,但我需要一些演示。一个简单的 2x2 矩阵就可以了。希望你能在这方面帮助我。这与我正在学习的深度学习课程有关。
ReLU 只是一个函数:
f(x)=max(0,x)
所以如果你有一个矩阵:
X=[[0, 3],[-2,7]] ----> f(X) = [[0,3][0,7]]
在向后传递过程中,梯度将仅流过输入矩阵的正元素。上一个示例获得的梯度掩码为:
X=[[0, 3],[-2,7]] ----> df(X)/d(X)=[[0,1][0,1]]
由于 ReLU 的导数未针对 x=0 定义,因此另一个有效掩码可能是:
df(X)/dX=[[c,1][0,1]] 其中 c 介于 0 和 1 之间。
ReLU(修正线性单元):
可以将输入值(
x
)转换为0到x
之间的输出值。 *如果 x
< 0, then 0 while if 0 <= x
,则 x
。
的公式是 y = max(0, x)。
是 PyTorch 中的 ReLU()。
import torch
my_tensor = torch.tensor([[8, -3, 0, 1],
[-5, 2, -1, 4]])
relu = nn.ReLU()
relu(input=my_tensor)
# tensor([[8, 0, 0, 1],
# [0, 2, 0, 4]])
用于:
的优点:
的缺点:
x = 0
处不可微。的图: