【问题标题】:How to calculate gradient from function in python - tuple IndexError?如何从python中的函数计算梯度 - 元组IndexError?
【发布时间】:2021-08-29 13:33:18
【问题描述】:

我正在寻找以下函数在点 x 处的渐变:

f(x) = w1 * x1^2 + w2 * x2

到目前为止我的代码:

def gradient(w1, w2, x):
   gradient = w1 * (x[0]**2) + w2 * (x[1]**2)
   return gradient 

但是,这不适用于以下例如

w1 = 5; w2 = 3; x = (1,)

我收到此错误: IndexError: 元组索引超出范围

这是否意味着我的索引之一是错误的?我认为一个元组只有两个索引 0 和 1。抱歉 - 感谢这可能是一个基本问题。

【问题讨论】:

  • x 的长度为 1,x[0] = 1,x[1] 那是什么?????????元组可以是任意长度

标签: python math tuples gradient


【解决方案1】:

您将 x = (v1,v2) 的两个值作为元组发送。

试试这个:

def gradient(w1, w2, x):
    gradient = w1 * (x[0]**2) + w2 * (x[1]**2)
    return gradient

w1 = 5; w2 = 3; x = (1,2)
print(gradient(w1,w2,x))
# 17

【讨论】:

    【解决方案2】:

    它对你有用,你只向元组传递了一个值,你需要两个。如果你想以这种方式传递零,那么这是不正确的。 (1,) - > (1, 0)

    def gradient(w1, w2, x):
       gradient = w1 * (x[0]**2) + w2 * (x[1]**2)
       return gradient
    
    w1 = 5
    w2 = 3
    x = (1,0)
    print(gradient(w1,w2,x))
    

    输出:

    5
    

    【讨论】:

      猜你喜欢
      • 2019-11-01
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 2016-07-01
      • 2019-11-04
      • 1970-01-01
      • 2021-06-12
      相关资源
      最近更新 更多