Theano:将扫描的迭代索引传递给被调用函数
Theano : Pass iterating index of scan to the called function
是否可以将 scan 的迭代索引传递给我从 scan 调用的函数?
例如 -
def step(x,i):
# i is the current scan index. Use it for some conditional expressions
for i in range(0,10):
step(x,i)
我想用 theano 做一些类似的事情。有什么线索吗?
谢谢
这在theano教程中有展示,例如here。
函数的第一个参数自动取自扫描的 sequences
参数(如果提供)。
例如,假设您要向向量 x
的每个元素添加其对应的索引。
你可以用 theano.scan
这样做:
import theano
import theano.tensor as T
x = T.dvector('x')
def step(idx, array):
return array[idx] + idx
results, updates = theano.scan(fn=step,
sequences=T.arange(x.shape[0]),
non_sequences=[x])
f = theano.function([x], results)
f([1., 0., 2.13])
# array([ 1. , 1. , 4.13])
所以基本上:注意你给 scan
的函数参数的顺序,因为它们是按特定顺序传递的。
你可以在相关documentation page of scan.
中看到具体的顺序
是否可以将 scan 的迭代索引传递给我从 scan 调用的函数? 例如 -
def step(x,i):
# i is the current scan index. Use it for some conditional expressions
for i in range(0,10):
step(x,i)
我想用 theano 做一些类似的事情。有什么线索吗?
谢谢
这在theano教程中有展示,例如here。
函数的第一个参数自动取自扫描的 sequences
参数(如果提供)。
例如,假设您要向向量 x
的每个元素添加其对应的索引。
你可以用 theano.scan
这样做:
import theano
import theano.tensor as T
x = T.dvector('x')
def step(idx, array):
return array[idx] + idx
results, updates = theano.scan(fn=step,
sequences=T.arange(x.shape[0]),
non_sequences=[x])
f = theano.function([x], results)
f([1., 0., 2.13])
# array([ 1. , 1. , 4.13])
所以基本上:注意你给 scan
的函数参数的顺序,因为它们是按特定顺序传递的。
你可以在相关documentation page of scan.