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

HierarchicalAttentionNetwork代码运行IndexError下标越界问题求解

报错根因

你遇到的越界错误核心是标签数组完全为空,触发点在索引操作labels = np.asarray(labels)[indices.astype(int)]:

  • 收集标签的循环里错误使用了np.append(labels, input_data.sentiment[idx]),np.append不是in-place操作,不会修改原labels列表,会返回新的数组但你没有接收,导致labels从头到尾都是空列表
  • 后续将labels转为numpy数组时,数组长度为0,用长度和数据集一致的indices索引空数组时,自然触发越界报错,6319只是随机打乱后的第一个索引值
修复方案

1. 修复标签收集逻辑(必改)

把循环内的标签添加代码,从np.append(labels, input_data.sentiment[idx])改为Python列表原生的append操作:

labels.append(input_data.sentiment[idx])

2. 简化标签转换逻辑(必改)

删除冗余的判断逻辑,直接统一转换标签格式,替换原来的标签转换代码:

# 删除原来的if np.any判断,直接用这行
labels = np_utils.to_categorical(np.array(labels))

3. 适配高版本Keras的自定义层(可选,避免后续训练问题)

如果你的TensorFlow/Keras版本大于2.0,需要把HierarchicalAttentionNetwork类build方法中的可训练权重声明修改为:

# 把原来的self.trainable_weights改为self._trainable_weights
self._trainable_weights = [self.W, self.b, self.u]

修复后打印labels.shape应该和data.shape[0]一致,即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:57:01