You need to enable JavaScript to run this app. 如何解决Keras pad_sequences出现zero-size array to reduction operation maximum报错
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Keras pad_sequences出现zero-size array to reduction operation maximum报错

报错原因
  • 核心错误来自filterPairs函数的逻辑缺陷:原代码遍历range(len(pairs))得到的是整型索引值,而非实际的英法双语语料对。将整数传入filterPair函数后,调用p[0].split()必然触发异常,被except捕获后统一返回False,最终过滤得到的pairs是空列表。
  • 空列表pairs会导致build_lang函数中添加序列的循环完全不执行,input_seq、output_seq最终都是空列表。你调用pad_sequences做输出序列填充时没有显式指定maxlen参数,函数会自动计算输入序列的最大长度,空列表对应的长度数组是空数组,调用np.max时就触发了零大小数组的报错。
修复方案
  1. 修正filterPairs函数的遍历逻辑,改为遍历语料对本身而非索引:
def filterPairs(pairs):
    return [pair for pair in pairs if filterPair(pair)]
  1. 建议给输出序列的pad_sequences调用也显式指定maxlen=max_length,避免后续边界场景触发同类报错,修改后build_lang的返回部分如下:
return ( 
         keras.preprocessing.sequence.pad_sequences(input_seq, maxlen=max_length, padding='post', truncating='post'), 
         keras.preprocessing.sequence.pad_sequences(output_seq, maxlen=max_length, padding='post', truncating='post'), 
         input_lang, output_lang
       )
  1. 可添加校验逻辑确认过滤后的语料数量,避免空数据进入后续流程:
pairs = filterPairs(pairs)
print(f"过滤后语料对数量: {len(pairs)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 15:36:01