用非差异参数定义JAX函数的通用方法

问题描述 投票:0回答:1

对于特定的JAX函数

func
,可以使用装饰器
@partial(jax.custom_jvp, nondiff_argnums=...)
来定义非差异的参数。但是,为了使其正常工作,还必须使用装饰器
jvp
明确定义自定义函数中的分化规则。我想知道是否有一种通用方法可以在没有定义自定义
@func.defjvp
(或
func
)函数的情况下定义任何给定
jvp
的非不同参数?当差异化规则太复杂而无法写出时,这将很有用。
	

在JAX中,
python function jax automatic-differentiation
1个回答
0
投票
装饰器允许您指定函数的哪些参数应视为非差异性(静态)。但是,此方法需要使用

@partial(jax.custom_jvp, nondiff_argnums=...)

手动定义自定义JVP规则,如果差异化规则复杂,这可能很麻烦。但是,有其他方法可以实现这一目标,而无需明确指定自定义分化规则。
1。使用
@func.defjvp

jax.jit

static_argnums,
编写函数,确保
jit(static_argnums=(2,))
被视为compile-compile-timeConstant
,避免了分化问题。
2。使用
mode
更好地调试,这在JAX的计算图中添加了一个custom名称,使调试变得更加容易。

3。使用

jax.named_call

用于部分功能应用程序。  
jax.tree_util.Partial锁定论点,将其视为静态。 4。使用

tree_util.Partial

预先定义静态参数。

mode
在Jax的Autodiff开始之前的静态论点中锁定。
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.