You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

测试代价函数参数时触发IndexError索引越界问题求助

修复代价函数中的IndexError索引越界问题

错误信息

IndexError: index 6 is out of bounds for axis 0 with size 6

问题场景

测试代价函数时触发上述错误,其他w、b参数测试能得到预期输出,本次测试输出正确但报错。输入矩阵X为100行2列(m=100,n=2)。

相关代码

代价函数核心循环代码

for i in range(m):
    z_wb = 0
    for j in range(n):
        # Your code here to calculate w[j] * X[i][j] z_wb += z_wb_ij # equivalent to z_wb = z_wb + z_wb_ij z_wb+=b –
        z_wb_ij = w[j] * X[i][j]

错误栈信息

# Calls the compute_cost function that you implemented above
---> 18     cost_without_reg = compute_cost(X, y, w, b)
     19 
     20     print(f'cost without reg is:{cost_without_reg}')

<ipython-input-17-d111fe703811> in compute_cost(X, y, w, b, *argv)
     32         for j in range(n):
     33             # Add the corresponding term to z_wb
---> 34             z_wb_ij = w[j]*X[i][j]                  # Your code here to calculate w[j] * X[i][j]
     35             z_wb += z_wb_ij                         # equivalent to z_wb = z_wb + z_wb_ij
     36 

问题根源

代码中循环变量j的取值范围range(n)与w的维度不匹配:w的长度为6(仅支持索引0-5),但j被循环到了6,导致访问w[6]时触发越界。大概率是compute_cost函数中n的赋值错误——比如误将n设置为len(w)而非X的列数X.shape[1],或者调用函数时传入了长度为6的w(而X仅2列)。

修复方案

  1. 正确获取n的值:
    在compute_cost函数开头,通过X的形状获取列数,确保n与X的列数一致:

    m, n = X.shape  # m为行数,n为列数,此处n=2
    

    避免从w的长度推导n,否则会随w的维度变化导致不匹配。

  2. 确保w的维度匹配:
    调用compute_cost时,传入的w必须是长度为n(即2)的数组,检查当前传入的w是否符合要求,若长度为6则调整为对应2列的权重数组。

  3. 验证循环逻辑:
    内层循环for j in range(n)在n=2时,j只会取0和1,不会超出w的索引范围(0-1),彻底避免越界错误。

内容的提问来源于stack exchange,提问作者Lori Wojciechowicz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:01:01