- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
例如,我可以定义一个递归 Python lambda 函数来计算斐波那契数列,如下所示:
fn = lambda z: fn(z-1)+fn(z-2) if z > 1 else z
但是,如果我尝试将其转换为 Theano 函数,Theano 将不会接受 fn,因为 fn 会调用 bool 运算“">”。所以这段代码崩溃了:
z = T.scalar('z')
fn = lambda z: fn(z-1)+fn(z-2) if z > 1 else z
fibby = theano.function([z], fn(z))
但是,如果我用 theano.tensor.gt(z,1) 替换 bool 运算符,代码就会进入无限递归,因此 theano.tensor.gt(z,1) 不会起到 "> 的作用“:
z = T.scalar('z')
fn = lambda z: fn(z-1)+fn(z-2) if theano.tensor.gt(z,1) else z
lappy = theano.function([z], fn(z))
print(lappy(4))
运行此命令会导致“超出最大递归深度”。怎么了?如果我将 fn 的定义替换为
,我会得到相同的“超出最大递归深度”错误fn = lambda z: theano.ifelse(theano.tensor.gt(z,1),fn(z-1)+fn(z-2),z)
PS 我不打算使用 theano.scan 来执行此操作...因为我想学习递归地执行此计算而不诉诸显式循环。
--肯
最佳答案
在 Theano 中,您可以使用 theano.scan(fn=myfunc(),outputs_info=...)
的 outputs_info
参数进行递归,并传递 的先前输出code>myfunc()
作为 myfunc()
的下一次迭代中的参数。
对于斐波那契数列,代码可能如下所示:
import numpy as np
import theano
import theano.tensor as T
# placeholder for the number of elements in the Fibonacci sequence
t_N = T.iscalar('N')
# first two elements for Fibonacci sequence
initial = np.array([1,1], dtype=np.int32)
t_initial = theano.shared(initial)
def fibonacci_iter(prev1_value, prev2_value):
return prev1_value + prev2_value
# Iterate N-2 times over fibonacci() function
# ('taps': [-2,-1] means take two previous values in the sequence of outputs):
outputs, updates = theano.scan(
fn=fibonacci_iter,
outputs_info = [{'initial': t_initial, 'taps': [-2,-1]}], # a list of dicts or a dict
n_steps=t_N-2)
# compiled function:
fibonacci = theano.function(
inputs=[t_N],
outputs=outputs)
n = 10
fibonacci_seq = fibonacci(n)
print(np.concatenate([initial, fibonacci_seq]))
输出:
[ 1 1 2 3 5 8 13 21 34 55]
引用:
http://deeplearning.net/software/theano/library/scan.html#theano.scan
关于Python/Theano : Is it possible to construct truly recursive theano functions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42480494/
考虑片段 - getLine >>= \_ -> getLine >>= putStr 它做了合理的事情,两次请求一个字符串,然后打印最后一个输入。因为编译器无法知道外部影响是什么getLine有,它
我已经为这个问题奋斗了几个小时,并且一直在努力使用正确的 MySQL 语法。任何关于我正在寻找的 SQL 类型的指示都将不胜感激。 请考虑这两个简单的表格: purchase: id email
假设我有一个复合数据类型 - data M o = M (String,o) 现在,我可以定义一个适用于 ALL M 的函数不管o .例如 - f :: M o -> M o f (M (s,o))
我想使用 Bootstrap 将 4 张图像放入 4 个堆叠列中。这是我的代码: Bootstrap Example
我想使用 Bootstrap 将 4 张图像放入 4 个堆叠列中。这是我的代码: Bootstrap Example
2个异步函数可以同时执行吗?例如在下面的代码中,是否有可能执行第一个 setTimeout 中的命令 let xEquals2 = x === 2;,然后是第二个 setTimeout 中的相同命令,
这个问题在这里已经有了答案: Is there any reason to continue using IntentService for handling GCM messages? (1 个回
我的应用程序需要将文件写入文件系统上的受限位置。 为此,我使用了一个以 root 身份运行的辅助工具。 一切正常,遵循 this example ,我的帮助工具已正确安装并运行。我使用此解决方案能够“
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我有三个 inline-block div,具有明确定义的宽度。 (它们分别是导航栏、工具栏和应用程序的横幅。) 当页面很宽时,我们需要它们去: [a][b][c] 很简单。但是当页面变窄(移动)时,
事实上,私有(private)方法是在C#中实现的,仍然可以通过Reflection进行搜索。 我要做的是编写public string Encrypt(string data)和private st
是否可以找到在匿名函数 (IIFE) 中声明的随机生成值,如果可以,如何找到? (function () { // assuming an epic, obscured, random funct
我有两个 html 文档,我希望它们共享一个变量及其值。 我尝试使用 Web API 存储来代替 JavaScript 中的“真正全局”变量: var number = parseIn
例如,我可以定义一个递归 Python lambda 函数来计算斐波那契数列,如下所示: fn = lambda z: fn(z-1)+fn(z-2) if z > 1 else z 但是,如果我尝试
我有一个相当简单的 API,用于添加,然后在 SQL Server 中更新一个小表。当我在调试器中进入我的数据访问代码时,它将插入(或更新,表现出相同的奇怪行为),但当我跨过相同的代码时则不会。当然,
在此线程中 https://stackoverflow.com/a/66163971/6514559据解释, 如果 Azure 决定您的应用程序需要扩展并创建新的主机,并假设有两个主机,那么这些参数的
标题确实说明了一切。我似乎无法在文档中找到“安全”关键字的正确答案,但是 w:1 = 等待独立服务器(可以是replicaSet env 中的主服务器),这似乎符合我对“安全”的理解。 此外,我们在
我对 PostgreSQL BDR 感到困惑,我有几个问题: 问题 1:BDR 真的是 PostgreSQL 的多主机吗? 根据 the docs here ,它说: The BDR (Bi-Dire
我是一名优秀的程序员,十分优秀!