TFLite:是否可以使用Keras的load_model转换H5模型但输入形状不同?

时间:2019-11-30 09:26:04

标签: tensorflow keras tensorflow2.0 tf.keras tf-lite

我当前使用此脚本将我的H5模型转换为TFLite:

 # CONVERTING TO TFLITE FORMAT
    g.save(os.path.join(save_dir, 'full_generator_{}_{}.h5'.format(epoch_number, current_loss)), include_optimizer=False)

    model = tf.keras.models.load_model(
        os.path.join(save_dir, 'full_generator_{}_{}.h5'.format(epoch_number, current_loss)), custom_objects={'ReflectionPadding2D': ReflectionPadding2D})
    converter = tf.lite.TFLiteConverter.from_keras_model(model)
    tflite_model = converter.convert()

    open(os.path.join(save_dir, 'full_generator_{}_{}.tflite'.format(epoch_number, current_loss)),
         "wb").write(tflite_model)
 # /CONVERTING TO TFLITE FORMAT

我的问题是H5模型的输入形状尺寸为256x256x3。我想要的是转换后的TFLite模型的输入形状尺寸为800x800x3。

我知道冻结图TF函数是可能的。

但是load_model有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用新的输入签名将模型包装在tf.function中,并改为转换function getParentPaths(pathList) { const splitPaths = pathList.map(path => { return path.split("/")[1]; }); const parentPaths = splitPaths.filter((item, index) => { return splitPaths.indexOf(item) === index; }); console.log(parentPaths); }

from_concrete_functions

如果您的模型不支持更改尺寸,您还可以创建一个tf。函数,以调整输入大小以匹配模型所需的形状。