符号中元素的无偏导数

2024-06-11 12:55:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近在Sympy中遇到了一些性能瓶颈(特别是,通过使用lambdas替换来计算符号矩阵的一行代码占用了程序运行时的90%),所以我决定让Theano试一试。在

它以前的应用是计算高斯过程超参数上的偏导数,其中使用一个(1,k)维辛符号矩阵(MatrixSymbol)可以很好地迭代该列表并区分每个项目上的矩阵。在

然而,这并没有贯彻到Theano中,文档似乎也没有详细说明如何做到这一点。索引ano中的符号向量将返回子传感器类型,这对于计算上的渐变无效。在

下面是一个简单的(但完全不正确的算法-剥离到我试图获得的功能)的版本。在

编辑:我修改了代码示例,将数据作为张量传递到函数中,如下所示,并尝试使用一系列单独的标量张量,因为我无法索引符号Theano向量的值,但也没有效果。在

import theano
import numpy as np

# Sample data
data = np.array(10*np.random.rand(5, 3), dtype='int64')

# Not including data as tensor, incorrect/invalid indexing of symbolic vector
l_scales_sym = theano.tensor.dvector('l_scales')
x = theano.tensor.dmatrix('x')
f = x/l_scales_sym
f_eval = theano.function([x, l_scales_sym], f)

df_dl = theano.gradient.jacobian(f.flatten(), l_scales_sym[0])
df_dl_eval = theano.function([x, l_scales_sym], df_dl)

代码片段的最后第二行是我试图对“length-scale”变量列表中的一个元素求偏导数,但是这种索引不适用于符号向量。在

任何帮助将不胜感激!在


Tags: 代码df列表datanp符号矩阵theano
1条回答
网友
1楼 · 发布于 2024-06-11 12:55:48

使用ano时,所有变量都应定义为ano张量(或共享变量);否则,变量不会成为计算图的一部分。在f = data/l_scales_sym中,变量data是一个numpy数组。试着把它定义为一个张量,它应该有用。在

相关问题 更多 >