24.8.24学习心得

x . grad . zero_()
y = x . sum()
y . backward()
x . grad
tensor([ 1. , 1. , 1. , 1. ])
因为 yx 中所有元素的总和,所以 x 的每个元素对 y 的贡献都是相等的,因此每个元素的梯度都是 1。

u = y.detach()

  • detach() 方法用于从计算图中分离出一个张量,使其不再跟踪历史,这样就不会在反向传播时影响 u

范数(Norm)是一个数学概念,在不同的领域有不同的应用,比如线性代数、泛函分析等。简单来说,范数可以被看作是一种“长度”或者“大小”的度量,但它不仅限于我们通常所说的欧几里得几何中的长度概念。在机器学习和深度学习中,范数经常用来衡量向量或矩阵的大小,也可以用于正则化模型以防止过拟合。

下面是一些常见的范数类型及其含义:

  1. 零范数(L0 norm):

    • 计算非零元素的数量。例如,向量 [0, 0, 1, 2, 0] 的 L0 范数是 2,因为它有两个非零元素。
  2. 一范数(L1 norm):

    • 向量元素绝对值之和。L1 范数常用于稀疏解,意味着它倾向于产生有较少非零元素的解。例如,向量 [1, -2, 3] 的 L1 范数是 |1| + |-2| + |3| = 6。
  3. 二范数(L2 norm):

    • 向量元素平方和的平方根。这是最常用的范数形式,类似于欧几里得距离。例如,向量 [1, -2, 3] 的 L2 范数是 √(1² + (-2)² + 3²) = √14。
  4. 无穷范数(Infinity norm 或 L∞ norm):

    • 向量元素的最大绝对值。例如,向量 [1, -2, 3] 的 L∞ 范数是 3,因为这是最大绝对值。

 深度学习框架可以自动计算导数:我们首先将梯度附加到想要对其计算偏导数的变量上,然后记录目 标值的计算,执行它的反向传播函数,并访问得到的梯度。 如何理解这句话?

  ·这句话描述的是深度学习框架中的自动微分(automatic differentiation)过程,特别是在执行反向传播(backpropagation)时如何计算梯度。以下是对这句话的逐步解释:

  1. 将梯度附加到变量上

    • 在深度学习中,当我们谈论梯度时,我们通常指的是损失函数(或其他目标函数)相对于模型参数的偏导数。
    • 自动微分允许我们计算这些偏导数,而不需要手动推导公式。
  2. 记录目标值的计算

    • 这意味着我们首先需要前向传播(forward pass),即在模型中正向计算输出,以评估损失函数或其他目标值。
  3. 执行反向传播函数

    • 反向传播是深度学习中的一个核心算法,用于计算损失函数相对于每个参数的梯度。
    • 这个过程通常利用了链式法则,从损失函数开始,逆向通过模型的每一层,计算并存储梯度信息。
  4. 访问得到的梯度

    • 一旦反向传播完成,我们就可以访问每个参数的梯度。这些梯度是优化算法(如梯度下降)更新模型参数的关键信息。
  5. 自动计算导数

    • 深度学习框架(如TensorFlow或PyTorch)提供了自动微分的工具,这意味着框架会自动处理导数的计算,使得开发者可以专注于模型的构建和训练过程。
  6. 使用自动微分的优势

    • 自动微分减少了手动计算导数的错误,提高了开发效率。
    • 它允许研究人员和开发者快速实验不同的模型架构和优化策略。

你可能感兴趣的:(学习)