2017-01-28 14 views
1

にテンソルのK-最初の値を設定します。Theano/Keras:私はカスタムKeras層を持っていると私はバックエンドとしてTheanoを使用して、私は、次の操作をしたい値

は、私たちが持つテンソルを持っていると仮定形状(N)。私はKの最初の値を固定値x(3など)に設定したいと思います。それ、どうやったら出来るの?私はargsortを使用する必要があると仮定しますが、私はTheanoを使用して実装する方法を知らない。

たとえば、簡単なFFレイヤーでは、テンソルaの最初のN値を値xに設定するにはどうすればよいですか?例えば

def call(self, x, mask=None): 
    a = K.dot(x, self.W) 

    if self.bias: 
     a += self.b 

    return a 

私はaこのような1への10の最初の値を設定することができnumpyの使用:私はKerasバックエンド機能やTheano機能を使用して同じことをやりたい

a[a.argsort() <= 10] = 1 

を。

答えて

1

a[a.argsort() <= 10] = 1について同等のコードは次のようになります。

import numpy as np 
from keras import backend as K 

a = np.asarray([[3,4,2,44,22,4,5,6,77,86,3,2,3,23,44,21], 
       [3,4,22,44,2,4,54,6,77,8,3,2,36,23,4,2]], dtype=np.float) 
a_t = K.variable(a) 

a[a.argsort() <= 10] = 1 
print a 

arg_sort = K.T.argsort(a_t) 
_cond = K.lesser_equal(arg_sort,10) 
a_new = K.switch(_cond, 1, a_t) 
print K.eval(a_new) 

を単一の文では、それは次のようになります。

a_new = K.switch(K.lesser_equal(K.T.argsort(a_t),10), 1, a_t) 
print K.eval(a_new) 

私は、これは正確に何が必要であるかどうかわからないです。

関連する問題