2016-08-12 59 views
0

如果我有这样的事情:使用两个theano功能结合在一起

import theano.tensor as T 
from theano import function 


a = T.dscalar('a') 
b = T.dscalar('b') 

first_func = a * b 
second_func = a - b 

first = function([a, b], first_func) 
second = function([a, b], second_func) 

,我想创建第三个功能是first_func(1,2) + second_func(3,4),是有办法做到这一点,创建一个通过这两个小的功能作为输入?

我想要做的事,如:

third_func = first(a, b) + second(a,b) 
third = function([a, b], third_func) 

但这不起作用。将我的功能分解为更小的功能的正确方法是什么?

回答

1

我想分解函数的唯一方法是张量变量,而不是函数调用。这应该工作:

import theano.tensor as T 
from theano import function 

a = T.dscalar('a') 
b = T.dscalar('b') 

first_func = a * b 
second_func = a - b 

first = function([a, b], first_func) 
second = function([a, b], second_func) 

third_func = first_func + second_func 
third = function([a, b], third_func) 

third_func = first(a, b) + second(a,b)不起作用,因为函数调用需要真正的价值,而ab是张/符号变量。基本上应该用张量定义数学运算,然后用函数来评估这些张量的值。