2016-04-25 7 views
1

私はTheanoと複合関数f(x、g(x))を計算したいと思います。残念ながら、私が関数のコンポジションをコーディングしようとすると、PythonはTypeErrorについて不平を言っています。たとえば、次の単純なスクリプトを検討してください。Theanoとの複合関数をどうやって作ることができますか?

import theano 
import theano.tensor as T 

x = T.dscalar('x') 

def g(): 
    y1 = T.sqr(x) 
    return theano.function([x], y1) 

def composition(): 
    input = g() 
    yComp = x * input 
    return theano.function([x], yComp) 

def f(): 
    y1 = T.sqr(x) 
    yMult = x * y1 
    return theano.function([x], yMult) 

funComp = composition()のPythonを書くTypeError例外を返します。

TypeError: unsupported operand type(s) for *: 'TensorVariable' and 'Function' 

しかし、私はコンパイルして機能fun = f()を計算することができます。機能構成を正常に確立する方法はありますか?私はどんな助けにも感謝しています!

答えて

1

この場合、実際には複数の機能は必要ありません。これはうまくいく。

import theano 
import theano.tensor as T 

x = T.dscalar('x') 


def g(): 
    y1 = T.sqr(x) 
    return y1 

def composition(): 
    input = g() 
    yComp = x * input 
    return theano.function([x], yComp) 

tfunc = composition() 
print tfunc(4) 
+0

@maliobro:ご返信ありがとうございます!残念ながら、私は最後にf = composition()を実行してf(1.1)を計算しようとするとPythonはTypeErrorと言っています: 'TensorVariable'オブジェクトは呼び出し可能ではありません。何が間違っているのか考えていますか? – fabian

+1

@fabian遅く返事をして申し訳ありません、私はあなたのf()関数と混同されましたが、これらの関数は動作中の合成関数でした。私は自分のコードを編集してみてください。 – malioboro

+0

あなたの歓迎、私は助けることができてうれしいです:) – malioboro

関連する問題