sequence_unpad在1.8.2报错,1.5.2正常:The shape of Input(Length) should be [batch_size]. Expected len_dims.size() == 1, but received len_dims.size():2 != 1:1.
Created by: vflanker
环境
- paddlepaddle版本:1.7.2
- CPU:Intel I7 GPU:GTX1060 6G
- OS:Ubuntu 1804
- 模型:Baseline DuIE https://github.com/PaddlePaddle/Research/tree/master/KG/DuIE_Baseline
- 数据集:LIC2020竞赛官方数据集
问题
此baseline在1.5.2上运行良好,但是切换到1.7.2后在ernie/finetune/relation_extraction_multi_cls.py中报错,在create_model函数中用到了sequence_unpad,报错如下:
Error Message Summary:
Error: The shape of Input(Length) should be [batch_size]. [Hint: Expected len_dims.size() == 1, but received len_dims.size():2 != 1:1.] at (/paddle/paddle/fluid/operators/sequence_ops/sequence_unpad_op.cc:41) [operator < sequence_unpad > error]
其数据是从py_reader里传入的,里面的shape定义原为:
"""
shapes=[[-1, args.max_seq_len, 1], [-1, args.max_seq_len, 1],
[-1, args.max_seq_len, 1], [-1, args.max_seq_len, 1],
[-1, args.max_seq_len, 1],
[args.batch_size, args.max_seq_len, args.num_labels], [args.batch_size], [-1, 1],
[-1, args.max_seq_len, 1], [-1, args.max_seq_len, 1]]
"""
后根据should be batch_size
提示更改为:
"""
shapes=[[args.batch_size, args.max_seq_len, 1], [args.batch_size, args.max_seq_len, 1],
[args.batch_size, args.max_seq_len, 1], [args.batch_size, args.max_seq_len, 1],
[args.batch_size, args.max_seq_len, 1],
[args.batch_size, args.max_seq_len, args.num_labels], # labels
[args.batch_size], # seq_lens
[args.batch_size], # example_index
[args.batch_size, args.max_seq_len], [args.batch_size, args.max_seq_len]]
"""
然后就能顺利往下走不报错,可是往下走了以后又会回过头来说seq_lens的长度为2不为1,但是我明明传的是长度为1,且在一开始已经走了下去,不知道为什么重新走了回来。
看到过一哥们提交了跟我一样的Issue,但是没遇到我的”倒打一耙“的情况,不知道@geekhch 是怎么解决的,希望paddle可结合你们之前举办的LIC2020的关系抽取基线系统复现我的error,谢谢。