使用paddle.jit.save()导出动态模型出错:
Only one dimension value of 'shape' in reshape can be -1.But received shape[2] is alse -1.
检查发现是如下代码问题:
B,C,H,W = inputs.shape
enc_out = inputs.reshape([B,C,-1]).transpose([0,2,1])
导出时设置的输入形状为infer_shape=[3,32,-1]
应该是inputs.reshape([B,C,-1])中第一项B是batch size为-1,而第三项也是-1,需要自行推断维度。
请问这种情况应该怎么处理?
4条答案
按热度按时间s3fp2yjn1#
您好,我们已经收到了您的问题,会安排技术人员尽快解答您的问题,请耐心等待。请您再次检查是否提供了清晰的问题描述、复现代码、环境&版本、报错信息等。同时,您也可以通过查看官网API文档、常见问题、历史Issue、AI社区来寻求解答。祝您生活愉快~
Hi! We've received your issue and please be patient to get responded. We will arrange technicians to answer your questions as soon as possible. Please make sure that you have posted enough message to demo your request. You may also check out the API,FAQ,Github Issue and AI community to get the answer.Have a nice day!
2izufjch2#
首先reshape传入多个-1时,有多种case满足情况,无法准确推断,因此,目标上说要把2个-1变成1个-1,在模型的处理逻辑上保证一个是确定的。因此,在拿到B,C,H,W = inputs.shape 检查B,如果B为-1,考虑能否做固定Batch『如果B为-1做if else判断』。对于变长数据,一般会用LodTensor,是否可以有Lod信息来对数据做变长做补充?
kxkpmulp3#
"如果B为-1做if else判断"
这是什么意思,做if else判断,不太明白
z0qdvdin4#
您好,还是要根据您使用场景出发,在reshape操作的时候把多个-1减少到不多于1个-1.