Enforce failed,输入和输出shape不一致
Created by: jaegerstar
错误信息如下:
paddle.fluid.core.EnforceNotMet: Enforce failed. Expected framework::slice_ddim(x_dims, 0, rank - 1) == framework::slice_ddim(label_dims, 0, rank - 1), but received framework::slice_ddim(x_dims, 0, rank - 1):487 != framework::slice_ddim(label_dims, 0, rank - 1):128.
Input(X) and Input(Label) shall have the same shape except the last dimension. at [/home/tangjian/paddle-release-docer/paddle/fluid/operators/cross_entropy_op.cc:37]
PaddlePaddle Call Stacks:
0 0x7feba2bb5f96p paddle::platform::EnforceNotMet::EnforceNotMet(std::__exception_ptr::exception_ptr, char const*, int) + 486
1 0x7feba35230dbp paddle::operators::CrossEntropyOp::InferShape(paddle::framework::InferShapeContext*) const + 1451
2 0x7feba3610939p paddle::framework::OperatorWithKernel::RunImpl(paddle::framework::Scope const&, boost::variant<paddle::platform::CUDAPlace, paddle::platform::CPUPlace, paddle::platform::CUDAPinnedPlace, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> const&) const + 73
3 0x7feba360cf6fp paddle::framework::OperatorBase::Run(paddle::framework::Scope const&, boost::variant<paddle::platform::CUDAPlace, paddle::platform::CPUPlace, paddle::platform::CUDAPinnedPlace, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_, boost::detail::variant::void_> const&) + 255
4 0x7feba2c7658dp paddle::framework::Executor::RunPreparedContext(paddle::framework::ExecutorPrepareContext*, paddle::framework::Scope*, bool, bool, bool) + 301
5 0x7feba2c77320p paddle::framework::Executor::Run(paddle::framework::ProgramDesc const&, paddle::framework::Scope*, int, bool, bool) + 128
6 0x7feba2b9df3dp
7 0x7feba2be81dcp pybind11::cpp_function::dispatcher(_object*, _object*, _object*) + 2540
8 0x7fec074e63d4p PyEval_EvalFrameEx + 25956
9 0x7fec074e7120p PyEval_EvalCodeEx + 2240
10 0x7fec074e5491p PyEval_EvalFrameEx + 22049
11 0x7fec074e7120p PyEval_EvalCodeEx + 2240
12 0x7fec074e5491p PyEval_EvalFrameEx + 22049
13 0x7fec074e7120p PyEval_EvalCodeEx + 2240
14 0x7fec074e5491p PyEval_EvalFrameEx + 22049
15 0x7fec074e7120p PyEval_EvalCodeEx + 2240
16 0x7fec074e7232p PyEval_EvalCode + 50
17 0x7fec0750161cp
18 0x7fec075016f0p PyRun_FileExFlags + 144
19 0x7fec07502bfcp PyRun_SimpleFileExFlags + 220
20 0x7fec075144bcp Py_Main + 3164
21 0x318ae1ecddp __libc_start_main + 253
22 0x400659p
网络代码如下:
class TextCNN_v3:
"""TextCNN_v3:
This version is with double layers CNN and without pooling
"""
def __init__(self, config):
self._config = config
def __call__(self, query, label):
return self.body(query, label, self._config)
def body(self, query, label, config):
"""Body function"""
def block(input, kernel_size):
bn_1 = fluid.layers.batch_norm(input=input, fuse_with_relu=True)
conv_1 = fluid.layers.sequence_conv(
input=bn_1,
num_filters=config.kernel_count,
filter_size=kernel_size,
padding=True)
bn_2 = fluid.layers.batch_norm(input=conv_1, fuse_with_relu=True)
conv_2 = fluid.layers.sequence_conv(
input=bn_2,
num_filters=config.kernel_count,
filter_size=kernel_size,
padding=True)
bn_3 = fluid.layers.batch_norm(input=conv_2, fuse_with_relu=True)
return bn_3
def MLP(vec):
for dim in config.mlp_hid_dim:
vec = fluid.layers.fc(vec, size=dim, act='relu')
# vec = fluid.layers.dropout(vec, dropout_prob=config.droprate_fc)
return vec
emb_para = fluid.ParamAttr(name='emb_s', initializer=fluid.initializer.Xavier, trainable=False)
embed = fluid.layers.embedding(input=query, size=[config.dict_dim, config.emb_dim], param_attr=emb_para)
block_res = []
for i, size in enumerate(config.kernel_size):
locals()['conv_' + str(i + 1)] = block(embed, kernel_size=size)
block_res.append(locals()['conv_' + str(i + 1)])
concated_seq = fluid.layers.concat(input=block_res, axis=1)
mlp_res = MLP(concated_seq)
prediction = fluid.layers.fc(mlp_res, size=config.class_dim, act='softmax')
loss = fluid.layers.cross_entropy(input=prediction, label=label)
avg_cost = fluid.layers.mean(x=loss)
acc = fluid.layers.accuracy(input=prediction, label=label)
auc = fluid.layers.auc(input=prediction, label=label)
return avg_cost, acc, prediction