如何将DeepSpeech的weights转换成onnx格式,或者任何能被tensorflow读取的格式。
Created by: SamChen
如题。 我对paddlepaddle了解很肤浅。。 我想用pytorch加载预训练的百度模型。 但在我到处理模型权重时,我发现每个conv layer 权重都是都被squeeze成了一个list。例如, 第一层的conv layer 参数应该是 32个kernel,每个kernel是一个shape应该是(1,11,41)的tensor。但预训练模型的第一层权重是一个shape为(1,14432)的list。因为32*11*41=14432, 所以我猜测这个list中的每个element对应该layer中的一个weight。根据paddle.v2.parameter.Parameters的帮助信息,一个list中的每一个element是protobuf struct。 它记录了每个weight的信息。
我对protobuf完全不熟悉。 不知道应该如何正确映射每一个element的权重信息到该layer的对应权重位置上去。即将 (1,14431) 复原为 32 个shape为(1,11,14)的kernel。 deepspeech必须要用0.13或者更早的paddlepaddle, 我很难找到相关的权重导出的信息。
有人能教教我应该怎么根据protobuf的信息做权重映射吗?只要能够将这个模型转换成onnx格式或者tensorflow的可读格式即可。 或者给点提示我应该去哪查找protobuf的更多相关资料。