随机搜索:构造一组单元方向



我目前正在研究机器学习精炼中随机搜索的一个示例实现,并且很难理解以下代码片段,其中w是输入向量,num_samples为要采样的随机方向数:

# construct set of random unit directions
directions = np.random.randn(num_samples,np.size(w))
norms = np.sqrt(np.sum(directions*directions,axis = 1))[:,np.newaxis]
directions = directions/norms   

我所理解的是,我们对w大小的随机向量进行采样,然后我们需要对其进行归一化,以获得单位方向。因此,我们分别计算所有方向的|V| = sqrt(x*x + y*y + z*z)V/|V| = (x/|V|, y/|V|, z/|V|)

有人能简单地向我解释一下第3行发生了什么吗,特别是为什么我们在轴=1上求和,以及[:,np.newaxis]的作用吗?我对这应该做什么有一个模糊的理解,但一些直觉会有很大帮助。

正如王在评论中指出的,行

norms = np.sqrt(np.sum(directions*directions,axis = 1))[:,np.newaxis]

在轴=1(列轴(上求和,并通过CCD_。这里有一个很好的解释np.newaxis是如何工作的。

感谢@wong.lok.yin的帮助。

最新更新