【发布时间】:2015-08-20 23:13:55
【问题描述】:
我有一个大小为 268800 的 numpy 数组。我使用这个数组作为反向传播算法的输入向量,我想对其进行规范化。但是,当我尝试时会发生一些奇怪的事情;向量的大小返回为 0,我得到错误:
Backpropagator.py:56: RuntimeWarning: divide by zero encountered in true_divide
x = input.x/np.linalg.norm(input.x)
Backpropagator.py:56: RuntimeWarning: invalid value encountered in true_divide
x = input.x/np.linalg.norm(input.x)
我不明白这在数学上是如何发生的。如果我们采用 n 维向量的欧几里得范数,范数可以为 0 的唯一情况是当向量是零向量时。
但是我正在操作的向量不是零向量,您可以清楚地看到here。
奇怪的是,当我使用 Numpy 的 dot() 方法时,也会出现同样的问题。
那么,什么可能导致 numpy 在一个甚至不接近零向量的向量上返回 0 范数?
【问题讨论】:
标签: python numpy linear-algebra