这是我在反向传播(神经网络)中遇到的一个问题。 我有一个评估成本的方法,权重是同一类的实例变量。我想计算这些权重的导数(它们可以很多)。 我如何以“优雅”的方式做到这一点?重量在字典里。 我可以在函数之外执行此操作,还是需要更改它
例如:
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()
是我添加的。
问题是可能有许多实例变量
目前没有回答
相关问题 更多 >
编程相关推荐