Obtain input_array and output_array items to convert model to tflite format

匿名 (未验证) 提交于 2019-12-03 01:34:02

问题:

PS. Please dont point me to converting Keras model directly to tflite as my .h5 file would fail to convert to .tflite directly. I somehow managed to convert my .h5 file to .pb

I have followed this Jupyter notebook for face recognition using Keras. I then saved my model to a model.h5 file, then converted it to a frozen graph, model.pb using this.

Now I want to use my tensorflow file in Android. For this I will need to have Tensorflow Lite, which requires me to convert my model into a .tflite format.

For this, I'm trying to follow the official guidelines for it here. As you can see there, it requires input_array and output_array arrays. How do I obtain details of these things from my model.pb file?

回答1:

input arrays and output arrays are the arrays which store input and output tensors respectively.

They intend to inform the TFLiteConverter about the input and output tensors which will be used at the time of inference.

For a Keras model,

The input tensor is the placeholder tensor of the first layer.

input_tensor = model.layers[0].input 

The output tensor may relate with a activation function.

output_tensor = model.layers[ LAST_LAYER_INDEX ].output 

For a Frozen Graph,

import tensorflow as tf gf = tf.GraphDef()    m_file = open('model.pb','rb') gf.ParseFromString(m_file.read()) 

We get the names of the nodes,

for n in gf.node:     print( n.name ) 

To get the tensor,

tensor = n.op 

The input tensor may be a placeholder tensor. Output tensor is the tensor which you run using session.run()

For conversion, we get,

input_array =[ input_tensor ] output_array = [ output_tensor ] 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!