当前位置: 首页 > 面试题库 >

向量归一化

王庆
2023-03-14
问题内容

半向量的公式为(Hv)=(Lv + Vv)/ | Lv + Vv |,其中Lv是光向量,Vv是视点向量。

我在Python代码中这样做正确吗?

Vvx = 0-xi  # view vector (calculating it from surface points)
Vvy = 0-yi
Vvz = 0-zi
Vv = math.sqrt((Vvx * Vvx) + (Vvy * Vvy) + (Vvz * Vvz))  # normalizing
Vvx = Vvx / Vv
Vvy = Vvy / Vv
Vvz = Vvz / Vv
Lv = (1,1,1)  # light vector
Hn = math.sqrt(((1 + Vvx) * (1 + Vvx)) + ((1 + Vvy) * (1 + Vvy)) +
               ((1 + Vvz) * (1 + Vvz))) 
Hv = ((1 + Vvx) / Hn, (1 + Vvy) / Hn, (1 + Vvz) / Hn)  # half-way vector

问题答案:

这是错误的名称。您所写的是两个向量的简单向量加法,结果是归一化的单位向量。

这是我的处理方式:

import math

def magnitude(v):
    return math.sqrt(sum(v[i]*v[i] for i in range(len(v))))

def add(u, v):
    return [ u[i]+v[i] for i in range(len(u)) ]

def sub(u, v):
    return [ u[i]-v[i] for i in range(len(u)) ]

def dot(u, v):
    return sum(u[i]*v[i] for i in range(len(u)))

def normalize(v):
    vmag = magnitude(v)
    return [ v[i]/vmag  for i in range(len(v)) ]

if __name__ == '__main__':
    l = [1, 1, 1]
    v = [0, 0, 0]

    h = normalize(add(l, v))
    print h


 类似资料:
  • 问题内容: 因此,我了解到在编程中使用平方根总是不好的做法,尤其是在每个更新步骤中。我正在尝试在圆之间进行逼真的弹性碰撞,并且我一直在阅读以下内容:http : //www.vobarian.com/collisions/2dcollisions2.pdf是否可以在不使用平方根的情况下标准化向量?还是做我正在做的任何快速方法? 问题答案: 乘以 大小平方的快速逆平方根进行归一化。 归一化向量意味着

  • 本节我们介绍批量归一化(batch normalization)层,它能让较深的神经网络的训练变得更加容易 [1]。在 “实战Kaggle比赛:预测房价” 一节里,我们对输入数据做了标准化处理:处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。标准化处理输入数据使各个特征的分布相近:这往往更容易训练出有效的模型。 通常来说,数据标准化预处理对于浅层模型就足够有效了。随着模型训练的进行

  • 我用TensorFlow来解决一个多目标回归问题。具体地说,在具有逐像素标记的卷积网络中,输入为图像,标签为“热图”,其中每个像素具有浮点值。更具体地说,每个像素的地面真值标记的下界为零,虽然技术上没有上界,但通常不会大于1e-2。 在不进行批量归一化的情况下,该网络能够给出合理的热图预测。通过批量归一化,网络需要很长时间才能获得合理的损耗值,而它所做的最好的工作就是使每个像素都成为平均值。这是使

  • 我正在用支持向量回归预测股票价格。我已经训练了一些价值,但当我预测的价值,每次我都必须训练的基础上(在线学习)。因此,我已经传递了这些值,以便在预测后在循环中进行训练。 那么,当我每次调用fit函数时,svr训练是如何基于一个输入在内部工作的呢?

  • 我很难理解Tensorflow中批量规范化的实现。为了举例说明,我创建了一个简单的网络,其中包含一个输入节点、一个隐藏节点和一个输出节点,并使用1个批运行,批大小为2。我的输入x由一个标量组成,该标量有2个值(即批大小为2),一个值设置为0,另一个值设置为1。 我运行一个纪元,并写出隐藏层的输出(批处理规范化之前和之后)以及批处理范数移动均值、方差、γ和beta。 这是我的代码: 以下是我运行代码