如何在paddle.v2中输出网络中多个中间层
Created by: daiwk
例如,我想输出最后的prob以及中间的一个embedding,模型结构中:
def topology(dict_dim, class_num, is_infer=True):
data = paddle.layer.data("word",
paddle.data_type.integer_value_sequence(input_dim))
emb = paddle.layer.embedding(input=data, size=emb_dim)
# ...
output = paddle.layer.fc(
input=[fc_last, lstm_last],
size=class_dim,
act=paddle.activation.Softmax(),
bias_attr=bias_attr,
param_attr=para_attr)
if is_infer:
return output, emb
infer部分:
prob_layer, emb = topology(dict_dim, class_num, is_infer=True)
inferer = paddle.inference.Inference(output_layer=[prob_layer, emb], parameters=parameters)
probs = inferer.infer(input=test_batch, field=["value", "value"])
但会报错
File "local_scripts/infer.py", line 19, in _infer_a_batch
probs = inferer.infer(input=test_batch, field=["value", "value"])
File "/home/work/daiwenkai/paddle_v2/python27/lib/python2.7/site-packages/paddle/v2/inference.py", line 79, in infer
retv = [numpy.concatenate(out) for out in retv]
ValueError: all the input array dimensions except for the concatenation axis must match exactly