Я также в процессе изучения того, как работает 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