繁体   English   中英

是否可以根据Theano中参数的符号定义采用其他形式的函数

[英]Is it possible to define a function that takes a different form based on the sign of the parameter in Theano

我需要定义以下功能。 在Theano有可能做吗? 在此处输入图片说明

更新:

为了澄清,我想定义一个可以采用上述形式的theano符号变量。 我知道我可以定义2个单独的变量,并根据R的值使用它们中的任何一个。我的问题是可以定义采用上述形式的单个变量。 原因是我需要对该变量进行渐变以及在其他变量中使用它,如果我可以使用单个符号变量来定义它,它将大大简化我的解决方案。

更新2:

lambda提出的解决方案不起作用。 这不会生成可稍后与Theano一起使用的符号变量:

r = T.dscalar('r')
dd = lambda r: r + 1 if r > 0 else r - 1 

在不了解有关Theano的细节的情况下,我记得将if-else语句转换为线性方程式的一种方法是将if检入变量本身,将其设置为01 然后,您可以执行以下操作:

sign = (R_t > 0) ## this is the part I don't know how exactly to do
(topEquation * sign) + (bottomEquation * (sign ^ 1))

它具有很好的属性,如果sign1 (或True ),则bottomEquationbottomEquation ,乘以1 ^ 1或仅乘以0 同样,如果sign0 / False ,则topEquation退出。

需要注意的是,尽管Theano可以帮助解决这一问题-它仍然会评估两个方程,因此这可能会带来效率问题(对于每个输入,它都会运行两个方程,然后忽略其中的一个)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM