Closed duanshengliu closed 1 year ago
HI,MPolaris,我观察到保存的keras模型所占空间相比原始onnx大了不少,例如mobilenet_v2的h5模型接近88多M,原始模型大约13.9M,原因定位到是 Conv、Dense、Conv2DTranspose等 在导入权重时使用的是 kernel_initializer=keras.initializers.Constant(weights), bias_initializer='zeros' if bias is None else keras.initializers.Constant(bias), 这种方式,这样使用会造成大量字符保存在h5模型中,占用空间大,netron打开也较慢
kernel_initializer=keras.initializers.Constant(weights),
bias_initializer='zeros' if bias is None else keras.initializers.Constant(bias),
建议都采用https://github.com/MPolaris/onnx2tflite/blob/main/layers/conv_layers.py#L166 深度可分离卷积实现方式: weights=[weights] 有bias则 weights=[weights, bias] 进行权重导入,感觉这样会更好些,实测修改后确实h5可以和原始onnx基本一样大,以上只是一定小小的建议
如果测试之后两个模型的输出是一致的,也就是不会导致精度问题,可以提交一个PR。
HI,MPolaris,我观察到保存的keras模型所占空间相比原始onnx大了不少,例如mobilenet_v2的h5模型接近88多M,原始模型大约13.9M,原因定位到是 Conv、Dense、Conv2DTranspose等 在导入权重时使用的是
kernel_initializer=keras.initializers.Constant(weights),
bias_initializer='zeros' if bias is None else keras.initializers.Constant(bias),
这种方式,这样使用会造成大量字符保存在h5模型中,占用空间大,netron打开也较慢建议都采用https://github.com/MPolaris/onnx2tflite/blob/main/layers/conv_layers.py#L166 深度可分离卷积实现方式: weights=[weights] 有bias则 weights=[weights, bias] 进行权重导入,感觉这样会更好些,实测修改后确实h5可以和原始onnx基本一样大,以上只是一定小小的建议