我有一个受过训练的模型(不是我的),可以在其中进行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。
该线程中还有我尝试过的脚本: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 ...)?