Tco-конвертер Tensorflow TF-Lite, опциональный итератор отсутствует
Я пытаюсь конвертировать простую модель с токо-конвертером TF-Lite через:
y_train = simple_model() #simple feed forward model
train_it = self.train_data.make_one_shot_iterator()
train_key, train_img, train_lab = train_it.get_next()
converter = tf.contrib.lite.TocoConverter.from_session(sess, [train_img], [y_train])
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
Однако это выдает ошибку, так как я использую итератор с одним выстрелом, который еще не поддерживается. Я получаю данные из записей Tensorflow и использую Tensorflow 1.9.
Преобразование неподдерживаемой операции:
OneShotIterator
2018-12-24 12:56: 18.134447: [tenorflow/contrib/lite/toco/import_tensorflow.cc:1366]
Преобразование неподдерживаемой операции:IteratorGetNext
2018-12-24 12:56: 18.136355: [tenorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39]
Перед удалением неиспользованных операций: 16 операторов, 25 массивов (0 квантовано)
2018-12-24 12:56: 18.136441: [tenorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39]
До общих преобразований графов: 16 операторов, 25 массивов (0 квантованных)
2018-12-24 12:56: 18.136605: [tenorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39]
После общих преобразований графов передают операторы 1: 6, 13 массивов (0 квантованных)
2018-12-24 12:56: 18.138847: [tenorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39]
После общих преобразований графов передают операторы 2:5, 11 массивов (0 квантованных)
2018-12-24 12:56: 18.138901: [tenorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39]
После общих преобразований графов передают 3: 4 оператора, 9 массивов (0 квантованных)
2018-12-24 12:56: 18.138919: [tenorflow/contrib/lite/toco/graph_transformations/graph_transformations.cc:39]
До преобразования графа деквантования: 4 оператора, 9 массивов (0 квантовано)
2018-12-24 12:56: 18.138942: [tenorflow/contrib/lite/toco/allocate_transient_arrays.cc:329]
Общий выделенный размер переходного массива: 0 байтов, оптимальное теоретическое значение: 0 байтов.
2018-12-24 12:56: 18.139043: [tenorflow/contrib/lite/toco/tflite/export.cc:330]
Некоторые из операторов в модели не поддерживаются стандартной средой выполнения TensorFlow Lite. Если у вас есть пользовательская реализация для них, вы можете отключить эту ошибку с помощью--allow_custom_ops
или настройкойallow_custom_ops=True
при звонкеtf.contrib.lite.toco_convert()
, Вот список операторов, для которых вам понадобятся пользовательские реализации:IteratorGetNext
,OneShotIterator
,
Прервано (ядро сброшено)
Итак, мой вопрос: что может быть простым альтернативным способом сделать модель конвертируемой? Кроме того, поскольку преобразованная модель будет использоваться только для прогнозирования отдельных изображений, возможно ли исключить конвейер "обучающих" изображений из преобразования?