方法对实例变量的导数

2024-06-16 10:07:49 发布

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

这是我在反向传播(神经网络)中遇到的一个问题。 我有一个评估成本的方法,权重是同一类的实例变量。我想计算这些权重的导数(它们可以很多)。 我如何以“优雅”的方式做到这一点?重量在字典里。 我可以在函数之外执行此操作,还是需要更改它

例如:

class T(object):

    def __init__(self):
        self.coff = {'a':2, 'b':3}

    def dfuna(self, x, y , a):
        self.coff['a'] = a   #one problem is here
        return self.fun(x,y)

    def dfunb(self, x, y , b):
        self.coff['b'] = b   #same here
        return self.fun(x,y)

    def fun(self, x, y):
        a, b = self.coff['a'], self.coff['b']
        return a*x**2 + b*y**2

T = T()
print(T.fun(1,1))

def derivative(f, x, h = 1e-6):
    return (f(x + h) - f(x - h)) / (2 * h)

x,y = 1,2
f = lambda dx : T.fun(dx,y)
print(derivative(f,x))

a = 2
g = lambda da : T.dfuna(x,y,da)
print(derivative(g,a))

b = 3
g = lambda db : T.dfunb(x,y,db)
print(derivative(g,b))

在这个例子中,我如何计算T.fun()对‘a’和‘b’的导数? 在本例中,“额外”函数dfuna()dfunb()是我添加的。 问题是可能有许多实例变量


Tags: 实例lambda函数selfreturnheredef权重