Tco-конвертер Tensorflow TF-Lite, опциональный итератор отсутствует - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь преобразовать простую модель с помощью конвертера 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-2412: 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.
Прервано (сброшено ядро)

Итак, мой вопрос: что будет простой альтернативойспособ сделать модель конвертируемой?Кроме того, поскольку преобразованная модель будет использоваться только для прогнозирования отдельных изображений, возможно ли исключить конвейер «обучающих» изображений из преобразования?

...