pytorch 到 tensorflow 可以用onnx作为中间工具转换,将pytorch转为onnx,再从onnx转为tensorflow,但是中间可能出现一些乱七八糟的问题。其实手动读参数再填充的对应的模型中也很方便,本文就总结一下手动模型转换。
第一种方式: 直接用kernel_initializer来填充权重
- dense 层转换:
dense_w = state_dict['dense.weight'].permute(1,0).numpy()
dense_b = state_dict['dense.bias'].numpy()
output = tf.keras.layers.Dense( dense_w.shape[-1], kernel_initializer=tf.constant_initializer(dense_w), bias_initializer=tf.constant_initializer(dense_b),name='bottleneck')(output)
output = tf.keras.layers.Softmax(-1)(output)
- 卷积层转换:
conv_w = state_dict['conv.weight'].permute(2,1,0).numpy()
conv_b = state_dict['conv.bias'].numpy()
output = tf.keras.layers.Conv1D(filters=conv_w.shape[-1], kernel_size=