如何查看.tflite文件中的权重?

时间:2018-08-31 08:45:11

标签: tensorflow tensorflow-lite

我获得了MobileNet的预训练的.pb文件,发现它没有被量化,而完全量化的模型应该转换为.tflite格式。由于我不熟悉用于移动应用程序开发的工具,因此如何从.tflite文件中获取MobileNet的完全量化的权重。更准确地说,如何提取量化参数并查看其数值?

4 个答案:

答案 0 :(得分:2)

Netron模型查看器具有漂亮的数据视图和导出以及漂亮的网络图视图。 https://github.com/lutzroeder/netron

答案 1 :(得分:2)

使用TensorFlow 2.0,您可以使用以下脚本提取权重和有关张量的一些信息(形状,dtype,名称,量化)-受TensorFlow documentation启发

import tensorflow as tf
import h5py


# Load TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path="v3-large_224_1.0_uint8.tflite")
interpreter.allocate_tensors()

# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()


# get details for each layer
all_layers_details = interpreter.get_tensor_details() 


f = h5py.File("mobilenet_v3_weights_infos.hdf5", "w")   

for layer in all_layers_details:
     # to create a group in an hdf5 file
     grp = f.create_group(str(layer['index']))

     # to store layer's metadata in group's metadata
     grp.attrs["name"] = layer['name']
     grp.attrs["shape"] = layer['shape']
     # grp.attrs["dtype"] = all_layers_details[i]['dtype']
     grp.attrs["quantization"] = layer['quantization']

     # to store the weights in a dataset
     grp.create_dataset("weights", data=interpreter.get_tensor(layer['index']))


 f.close()

答案 2 :(得分:0)

我也正在研究TFLite的工作方式。我发现的方法可能不是最好的方法,请多多关照。到目前为止,这是我使用flatbuffer python API所发现的。

首先,您需要使用flatbuffer编译架构。输出将是一个名为tflite的文件夹。

flatc --python tensorflow/contrib/lite/schema/schema.fbs

然后,您可以加载模型并获得所需的张量。 Tensor有一个称为Buffer()的方法,根据该模式,

  

一个索引,该索引引用模型根目录中的缓冲区表。

因此它指向您数据的位置。

from tflite import Model
buf = open('/path/to/mode.tflite', 'rb').read()
model = Model.Model.GetRootAsModel(buf, 0)
subgraph = model.Subgraphs(0)
# Check tensor.Name() to find the tensor_idx you want
tensor = subgraph.Tensors(tensor_idx) 
buffer_idx = tensor.Buffer()
buffer = model.Buffers(buffer_idx)

之后,您可以通过调用buffer.Data()

来读取数据

参考: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/lite/schema/schema.fbs https://github.com/google/flatbuffers/tree/master/samples

答案 3 :(得分:0)

您可以使用 Netron 应用程序查看 macOS:下载 .dmg 文件或运行 brew install netron

Linux:下载 .AppImage 文件或运行 snap install netron

Windows:下载 .exe 安装程序或运行 winget install netron

浏览器:启动浏览器版本。

Python 服务器:运行 pip install netron 和 netron [FILE] 或 netron.start('[FILE]').