如何首先将Theano后端通道最后模型转换为Tensorflow后端模型,然后转换为tflite?

时间:2019-04-15 10:30:35

标签: python tensorflow keras theano tensorflow-lite

问题

我有一个受过训练的模型(不是我的),可以在其中进行Theano后端的推断。我需要在Android上运行它,因此我尝试将此模型转换为Tensorflow lite(.tflite)。

在将其转换为.tflite之前,我尝试使模型与tensorflow后端一起工作,但我无法正常进行。 (带有keras的python)

什么有效

这就是我使用theano模型,theano后端,通道最后排序的方法,它可以正常工作:

with open('Model/definition.json', 'r') as f:
    model = model_from_json(f.read())
model.load_weights('Model/weights.h5')
p = model.predict_proba(preprocessed_data)
print_results(p)

该模型只有两个输出(检测到或未检测到),并且运行良好。

什么不起作用

当我仅将后端切换到tensorflow并运行相同的代码时,该模型将不再检测任何东西。

我已经尝试过的东西

我首先认为这是一个模糊的订购问题,例如我在本页上看到的:Converting Theano-based Keras model definition to TensorFlow

  • theano模型应使用渠道优先维度。
  • 张量流 模型应使用通道最后尺寸。

该线程中还有我尝试过的脚本:https://github.com/keras-team/keras/issues/5374

这对我不起作用,因为我认为我的重量已经是最后订购的频道! (这是我对netron的看法,请参见Imgur上的图片

我最后尝试的是convert_all_kernels_in_model(),但出现此错误:

  

tensorflow.python.framework.errors_impl.FailedPreconditionError:尝试使用未初始化的值conv2d_1 / kernel        [[{{node _retval_conv2d_1 / kernel_0_0}}]]

问题

您认为我需要在我的模型上做些什么才能使其与tensorflow后端一起运行(以便将其转换为tflite ...)?

0 个答案:

没有答案