如果我有类似的话:
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)
但这不起作用。将我的函数分解为更小函数的正确方法是什么?
答案 0 :(得分: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)
不起作用,因为函数调用需要实数值,而a
和b
是张量/符号变量。基本上应该用张量定义数学运算,然后使用函数来评估这些张量的值。