Я пытаюсь преобразовать замороженную модель, которую я получил из davidsandberg / facenet в .tflite в Ubuntu 18.04.1 LTS (VirtualBox), используя TF Lite Converter (это конкретная модель, которую я использую) .Когда я пытаюсь выполнить команду:
/home/nils/.local/bin/tflite_convert
--output_file=/home/nils/Documents/frozen.tflite
--graph_def_file=/home/nils/Documents/20180402-114759/20180402-114759.pb
--input_arrays=input --output_array=embeddings
, я получаю следующую ошибку:
2018-11-29 16:36:21.774098: I
tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports
instructions that this TensorFlow binary was not compiled to use: AVX2
Traceback (most recent call last):
File "/home/nils/.local/bin/tflite_convert", line 11, in <module>
sys.exit(main())
File
"/home/nils/.local/lib/python3.6/site-packages/tensorflow/contrib /lite/python/tflite_convert.py",
line 412, in main
app.run(main=run_main, argv=sys.argv[:1])
File
"/home/nils/.local/lib/python3.6/site-packages/tensorflow/python/platform/app.py",
line 125, in run
_sys.exit(main(argv))
File
"/home/nils/.local/lib/python3.6/site-packages/tensorflow/contrib/lite/python/tflite_convert.py",
line 408, in run_main
_convert_model(tflite_flags)
File
"/home/nils/.local/lib/python3.6/site-packages/tensorflow/contrib/lite/python/tflite_convert.py",
line 162, in _convert_model
output_data = converter.convert()
File
"/home/nils/.local/lib/python3.6/site-packages/tensorflow/contrib/lite/python/lite.py",
line 404, in convert
"'{0}'.".format(_tensor_name(tensor)))
ValueError: Provide an input shape for input array 'input'.
Поскольку я сам не тренировался с моделью, я не знаю, какую именно формувход имел.Вероятно, можно извлечь его из classifier.py и facenet.py, найденного в GitHubRep Дэвида Сэндберга, в facenet / src, но я не достаточно понимаю код, чтобы сделать это сам.Я даже пытался анализировать график с помощью тензорной доски.Я все равно не могу понять, но, может быть, вы можете: Tensorboard-Screenshot Как вы, возможно, уже заметили, я довольно новичок в Ubuntu, Tensorflow и во всем, что связано, поэтому я рад принять любоесовет по этому вопросу.Заранее спасибо!
Это соответствующая часть classifier.py, где модель загружается и настраивается:
# Load the model
print('Loading feature extraction model')
facenet.load_model(args.model)
# Get input and output tensors
images_placeholder = tf.get_default_graph().get_tensor_by_name("input:0")
embeddings = tf.get_default_graph().get_tensor_by_name("embeddings:0")
phase_train_placeholder = tf.get_default_graph().get_tensor_by_name("phase_train:0")
embedding_size = embeddings.get_shape()[1]
# Run forward pass to calculate embeddings
print('Calculating features for images')
nrof_images = len(paths)
nrof_batches_per_epoch = int(math.ceil(1.0*nrof_images / args.batch_size))
emb_array = np.zeros((nrof_images, embedding_size))
for i in range(nrof_batches_per_epoch):
start_index = i*args.batch_size
end_index = min((i+1)*args.batch_size, nrof_images)
paths_batch = paths[start_index:end_index]
images = facenet.load_data(paths_batch, False, False, args.image_size)
feed_dict = { images_placeholder:images, phase_train_placeholder:False }
emb_array[start_index:end_index,:] = sess.run(embeddings, feed_dict=feed_dict)
classifier_filename_exp = os.path.expanduser(args.classifier_filename)