PaddlePaddle出现Enforce failed. Expected w_dims[0] == frame_size

本文描述了在使用PaddlePaddle框架中的LSTM模型进行训练时遇到的Expected w_dims[0]==frame_size错误。错误发生在dynamic_lstm操作中,原因在于权重维度与预期帧大小不符。通过调整模型参数,特别是输入序列和LSTM单元的大小,成功解决了该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    • 问题描述:运行Fluid编写的模型时,输出Enforce failed. Expected w_dims[0] == frame_size
  • 报错输出:

Traceback (most recent call last):
  File "train.py", line 173, in <module>
    train()
  File "train.py", line 63, in train
    max_length=args.max_length)
  File "/Users/jizhi/Desktop/Paddle/models/fluid/PaddleNLP/neural_machine_translation/rnn_search/attention_model.py", line 81, in seq_to_seq_net
    input_seq=src_embedding, gate_size=encoder_size)
  File "/Users/jizhi/Desktop/Paddle/models/fluid/PaddleNLP/neural_machine_translation/rnn_search/attention_model.py", line 59, in bi_lstm_encoder
    size=gate_size, use_peepholes=False)
  File "/Users/jizhi/anaconda3/envs/paddle/lib/python3.5/site-packages/paddle/fluid/layers/nn.py", line 452, in dynamic_lstm
    'candidate_activation': candidate_activation
  File "/Users/jizhi/anaconda3/envs/paddle/lib/python3.5/site-packages/paddle/fluid/layer_helper.py", line 50, in append_op
    return self.main_program.current_block().append_op(*args, **kwargs)
  File "/Users/jizhi/anaconda3/envs/paddle/lib/python3.5/site-packages/paddle/fluid/framework.py", line 1207, in append_op
    op = Operator(block=self, desc=op_desc, *args, **kwargs)
  File "/Users/jizhi/anaconda3/envs/paddle/lib/python3.5/site-packages/paddle/fluid/framework.py", line 656, in __init__
    self.desc.infer_shape(self.block.desc)
paddle.fluid.core.EnforceNotMet: Enforce failed. Expected w_dims[0] == frame_size, but received w_dims[0]:128 != frame_size:512.
The first dimension of Input(Weight) should be 512. at [/Users/paddle/minqiyang/Paddle/paddle/fluid/operators/lstm_op.cc:63]
PaddlePaddle Call Stacks:
0          0x10cf18a68p paddle::platform::EnforceNotMet::EnforceNotMet(std::exception_ptr, char const*, int) + 760
1          0x10da71c6cp paddle::operators::LSTMOp::InferShape(paddle::framework::InferShapeContext*) const + 6892
2          0x10cfd5e68p paddle::framework::OpDesc::InferShape(paddle::framework::BlockDesc const&) const + 1496
3          0x10cf9f479p _ZZN8pybind1112cpp_function10initializeIZNS0_C1IvN6paddle9framework6OpDescEJRKNS4_9BlockDescEEJNS_4nameENS_9is_methodENS_7siblingEEEEMT0_KFT_DpT1_EDpRKT2_EUlPKS5_S8_E_vJSN_S8_EJS9_SA_SB_EEEvOSD_PFSC_SF_ESL_ENKUlRNS_6detail13function_callEE_clESU_ + 185
4          0x10cf233aap pybind11::cpp_function::dispatcher(_object*, _object*, _object*) + 5786
5          0x1001a959fp PyCFunction_Call + 127
6          0x1002747e7p PyEval_EvalFrameEx + 33207
7          0x10026afafp _PyEval_EvalCodeWithName + 335
8          0x1001766aap function_call + 106
9          0x100132b35p PyObject_Call + 69
10         0x100155694p method_call + 148
11         0x100132b35p PyObject_Call + 69
12         0x1001cf415p slot_tp_init + 117
13         0x1001d3ac1p type_call + 209
14         0x100132b35p PyObject_Call + 69
15         0x100271c9bp PyEval_EvalFrameEx + 22123
16         0x10026afafp _PyEval_EvalCodeWithName + 335
17         0x1001766aap function_call + 106
18         0x100132b35p PyObject_Call + 69
19         0x100271c9bp PyEval_EvalFrameEx + 22123
20         0x10026afafp _PyEval_EvalCodeWithName + 335
21         0x1002712a7p PyEval_EvalFrameEx + 19575
22         0x10026afafp _PyEval_EvalCodeWithName + 335
23         0x1002712a7p PyEval_EvalFrameEx + 19575
24         0x10026afafp _PyEval_EvalCodeWithName + 335
25         0x1002712a7p PyEval_EvalFrameEx + 19575
26         0x10026afafp _PyEval_EvalCodeWithName + 335
27         0x1002712a7p PyEval_EvalFrameEx + 19575
28         0x10026afafp _PyEval_EvalCodeWithName + 335
29         0x1002712a7p PyEval_EvalFrameEx + 19575
30         0x10026afafp _PyEval_EvalCodeWithName + 335
31         0x1002bd758p PyRun_FileExFlags + 248
32         0x1002bceeep PyRun_SimpleFileExFlags + 382
33         0x1002e1d86p Py_Main + 3622
34         0x100123861p main + 497
35      0x7fff5f4da015p start + 1
36                 0x2p
  • 相关代码:
forward, _ = fluid.layers.dynamic_lstm(
    input=input_forward_proj,
    size=gate_size * 4, use_peepholes=False)
input_reversed_proj = fluid.layers.fc(input=input_seq,
                                      size=gate_size * 4,
                                      act='tanh',
                                      bias_attr=False)
reversed, _ = fluid.layers.dynamic_lstm(
    input=input_reversed_proj,
    size=gate_size,
    is_reverse=True,
    use_peepholes=False)
return forward, reversed
  • 解决方法:
forward, _ = fluid.layers.dynamic_lstm(
            input=input_forward_proj,
            size=gate_size * 4, use_peepholes=False)
input_reversed_proj = fluid.layers.fc(input=input_seq,
                                      size=gate_size * 4,
                                      act='tanh',
                                      bias_attr=False)
reversed, _ = fluid.layers.dynamic_lstm(
    input=input_reversed_proj,
    size=gate_size * 4,
    is_reverse=True,
    use_peepholes=False)
return forward, reversed
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值