2017-05-11 6 views
2

私はC++で制限付きboltzmannマシンを実装しようとしています。 https://github.com/echen/restricted-boltzmann-machines/blob/master/rbm.pyこのようなpythonコードでは、より大きい記号の意味は何ですか?

これはライン37である:私はガイドとして、このPythonコードを使用してい

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>>の、両方の2D行列であり、num_examplesとnum_hiddenは共に整数です。

ここをクリックして、大なり記号の意味を教えてください。

+1

は、HTTPSここに参照.org/doc/numpy/reference/generated/numpy.greater.html#numpy.greater – JkShaw

+0

http://stackoverflow.com/questions/1061283/lt-instead-of-cmp&https://docs.python.org /3/reference/datamodel.html#object.__lt__ –

答えて

7

おそらくnumpyをC++に翻訳するのは簡単ではないでしょう。ロットの抽象化はnumpyです。 pos_hidden_probsは、ある種のある場合

>>> 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) 
>>> 

np.random.rand(...)pos_hidden_probsがスカラーまたはnp.ndarrayのどちらかであるならば、それは(つまり、要素ごと)ベクトル化方法を動作しますnp.ndarrayを返すためとにかく、それは、ベクトル化比較として演技します

>>> 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) 
>>> 
1

演算子がオーバーロードされているため、>演算子は実質的に何でも行うことができます。つまり、オブジェクトの特殊メソッド__gt__を呼び出すだけです。しかし、他の情報がなければ、私はそれが単に "より大きい"と評価してboolの値を返すと期待します。

3

>オペレータがnumpyの中で、要素ごとに動作し、例えば:np.ndarrayは、動作は、broadcastingでnumpyのの機能に影響を与えた可能性があります

np.array([[1,2],[3,4]]) > np.array([[2,2],[2,2]]) 

はあなたにnp.array([[False,False],[True,True]])

を与えるnumpyのはまた別の次元の配列の間の比較に意味を与える、broadcastingを行います。

2

> 2D numpyのアレイ内の各項目に対して隠さPROB(この場合フロート)を比較し、ブール値の2Dアレイを返して://docs.scipy:

>>> 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) 
>>> 
関連する問題