python这段代码中的大于号是什么意思?
What does the greater-than symbol mean in this piece of python code?
我正在尝试用 C++ 实现受限玻尔兹曼机。我使用此 Python 代码作为指南:
https://github.com/echen/restricted-boltzmann-machines/blob/master/rbm.py
这是第 37 行:
pos_hidden_states = pos_hidden_probs > np.random.rand(num_examples, self.num_hidden + 1)
pos_hidden_states和pos_hidden_probs都是二维矩阵,在C++中属于vector<vector<double>>
类型,num_examples和num_hidden都是整数。
谁能解释一下这里的大于号是什么意思?
由于运算符重载,>
运算符几乎可以做任何事情——它只是调用对象的 __gt__
特殊方法。但是如果没有任何其他信息,我希望它能简单地评估 "greater than" 和 return 一个 bool
值。
可能不容易将 numpy
翻译成 C++,numpy
中有很多抽象。无论如何,它充当矢量化比较,因为 np.random.rand(...)
returns 和 np.ndarray
,如果 pos_hidden_probs
是标量或 np.ndarray
它将表现在矢量化(即逐元素)方式:
>>> rand_array = np.random.rand(2, 2)
>>> rand_array
array([[ 0.1807726 , 0.67617382],
[ 0.84396805, 0.04450794]])
>>> 0.5 > rand_array
array([[ True, False],
[False, True]], dtype=bool)
>>>
如果 pos_hidden_probs
是某种 np.ndarray
,行为可能会受到 broadcasting 的影响,这是 numpy 的一个特性:
>>> np.array([0.5, 0.5]) > rand_array
array([[ True, False],
[False, True]], dtype=bool)
>>> np.array([0.5, .9]) > rand_array
array([[ True, True],
[False, True]], dtype=bool)
>>>
>
运算符在 NumPy 中按元素工作,例如
np.array([[1,2],[3,4]]) > np.array([[2,2],[2,2]])
给你np.array([[False,False],[True,True]])
NumPy 也做 broadcasting,这为不同维度的数组之间的比较赋予了意义。
> 将隐藏的概率(在本例中为浮点数)与二维 numpy 数组中的每个项目进行比较,并返回布尔值的二维数组:
>>> import numpy as np
>>> np.random.randn(3,2)array([[-0.74615339, -1.22667606],
[ 0.22729787, 0.72070398],
[-1.06876014, 0.06367189]])
>>> 5. > np.random.randn(3,2)
array([[ True, True],
[ True, True],
[ True, True]], dtype=bool)
>>>
我正在尝试用 C++ 实现受限玻尔兹曼机。我使用此 Python 代码作为指南: https://github.com/echen/restricted-boltzmann-machines/blob/master/rbm.py
这是第 37 行:
pos_hidden_states = pos_hidden_probs > np.random.rand(num_examples, self.num_hidden + 1)
pos_hidden_states和pos_hidden_probs都是二维矩阵,在C++中属于vector<vector<double>>
类型,num_examples和num_hidden都是整数。
谁能解释一下这里的大于号是什么意思?
由于运算符重载,>
运算符几乎可以做任何事情——它只是调用对象的 __gt__
特殊方法。但是如果没有任何其他信息,我希望它能简单地评估 "greater than" 和 return 一个 bool
值。
可能不容易将 numpy
翻译成 C++,numpy
中有很多抽象。无论如何,它充当矢量化比较,因为 np.random.rand(...)
returns 和 np.ndarray
,如果 pos_hidden_probs
是标量或 np.ndarray
它将表现在矢量化(即逐元素)方式:
>>> rand_array = np.random.rand(2, 2)
>>> rand_array
array([[ 0.1807726 , 0.67617382],
[ 0.84396805, 0.04450794]])
>>> 0.5 > rand_array
array([[ True, False],
[False, True]], dtype=bool)
>>>
如果 pos_hidden_probs
是某种 np.ndarray
,行为可能会受到 broadcasting 的影响,这是 numpy 的一个特性:
>>> np.array([0.5, 0.5]) > rand_array
array([[ True, False],
[False, True]], dtype=bool)
>>> np.array([0.5, .9]) > rand_array
array([[ True, True],
[False, True]], dtype=bool)
>>>
>
运算符在 NumPy 中按元素工作,例如
np.array([[1,2],[3,4]]) > np.array([[2,2],[2,2]])
给你np.array([[False,False],[True,True]])
NumPy 也做 broadcasting,这为不同维度的数组之间的比较赋予了意义。
> 将隐藏的概率(在本例中为浮点数)与二维 numpy 数组中的每个项目进行比较,并返回布尔值的二维数组:
>>> import numpy as np
>>> np.random.randn(3,2)array([[-0.74615339, -1.22667606],
[ 0.22729787, 0.72070398],
[-1.06876014, 0.06367189]])
>>> 5. > np.random.randn(3,2)
array([[ True, True],
[ True, True],
[ True, True]], dtype=bool)
>>>