use*_*661 2 c++ python syntax numpy notation
我试图用C++实现一个受限制的boltzmann机器.我使用这个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)
Run Code Online (Sandbox Code Playgroud)
pos_hidden_states和pos_hidden_probs都是2D矩阵,vector<vector<double>>C++中的类型,num_examples和num_hidden都是整数.
任何人都可以解释一下大于号的含义吗?
可能不容易转换numpy成C++,抽象的很多numpy.无论如何,它作为矢量化比较,因为np.random.rand(...)返回a 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)
>>>
Run Code Online (Sandbox Code Playgroud)
如果pos_hidden_probs是某种形式np.ndarray,行为可能会受到广播的影响,这是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)
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
202 次 |
| 最近记录: |