Я пытаюсь преобразовать обученную модель в тензорном потоке в Открыть VINO Промежуточное представление.
У меня есть модель в форме, приведенной ниже
class Conv3DModel(tf.keras.Model):
def __init__(self):
super(Conv3DModel, self).__init__()
# Convolutions
self.conv1 = tf.compat.v2.keras.layers.Conv3D(32, (3, 3, 3), activation='relu', name="conv1", data_format='channels_last')
self.pool1 = tf.keras.layers.MaxPool3D(pool_size=(2, 2, 2), data_format='channels_last')
self.conv2 = tf.compat.v2.keras.layers.Conv3D(64, (3, 3, 3), activation='relu', name="conv1", data_format='channels_last')
self.pool2 = tf.keras.layers.MaxPool3D(pool_size=(2, 2,2), data_format='channels_last')
# LSTM & Flatten
self.convLSTM =tf.keras.layers.ConvLSTM2D(40, (3, 3))
self.flatten = tf.keras.layers.Flatten(name="flatten")
# Dense layers
self.d1 = tf.keras.layers.Dense(128, activation='relu', name="d1")
self.out = tf.keras.layers.Dense(6, activation='softmax', name="output")
def call(self, x):
x = self.conv1(x)
x = self.pool1(x)
x = self.conv2(x)
x = self.pool2(x)
x = self.convLSTM(x)
x = self.flatten(x)
x = self.d1(x)
return self.out(x)
I пытался конвертировать модель в ИК. Модель здесь .
Я обучил эту модель тензорному потоку 1.15. Tensorflow 2.0 в настоящее время не поддерживается.
Теперь я попытался запустить команду
python3 /opt/intel/openvino/deployment_tools/model_optimizer/mo_tf.py --saved_model_dir jester_trained_models / 3dcnn- basic / --output_dir / home / deepanshu / open_vino / udacity_project_custom_model /
Теперь я получил следующую ошибку
Аргументы оптимизатора модели:
Общие параметры :
Путь к модели ввода: Нет
Путь для сгенерированного IR: / home / deepanshu / open_vino / udacity_project_custom_model /
Имя выхода ИК: сохраненная_модель
Уровень записи: ОШИБКА
Пакет: Не указано, унаследовано от модели
Входные слои: не указано, унаследовано от модели
Выходные слои: не указано, унаследовано от модели
Форма ввода: Не указано, унаследовано от модели
Среднее значения: не указано
значения шкалы: не указано
коэффициент масштабирования: не указано
Точность ИК: FP32
Включить слияние: True
Включить слияние сгруппированных сверток: True
Переместить средние значения в секцию предварительной обработки: False
Обратные входные каналы: False
Спецификация TensorFlow c Параметры:
Модель ввода в текстовом формате protobuf: False
Путь к дампу модели для TensorBoard: Нет
Список общих библиотеки с реализацией пользовательских слоев TensorFlow: Нет
Обновить файл конфигурации с именами узлов ввода / вывода: Нет
Использовать файл конфигурации, используемый для генерации модель с API обнаружения объектов: Нет
Операции по разгрузке: Нет
Шаблоны для разгрузки: Нет * 112 0 *
Использовать файл конфигурации: нет
Версия оптимизатора модели: 2020.1.0-61-gd349c3ba4a
[ ОШИБКА] Неожиданное исключение произошло при извлечении атрибутов для узла conv3d_model / conv_lst_m2d / bias / Read / ReadVariableOp. Исходное сообщение об исключении: код 'ascii' c не может декодировать байт 0xc9 в позиции 1: порядковый номер не в диапазоне (128)
Насколько я вижу, это tf.keras. Layers.ConvLSTM2D (40, (3, 3)) вызывает проблемы. Я застрял здесь. Может кто-нибудь сказать мне, где я могу продолжить?
Спасибо
Изменить на вопрос
Теперь я отклонил вышеуказанную реализацию тензорного потока и использовал керасы. Моя разработанная модель h5 была преобразована в формат .pb с использованием этой записи .
Теперь я запустил оптимизатор модели для этого файла .pb. Использование команды
python3 /opt/intel/openvino/deployment_tools/model_optimizer/mo_tf.py --input_model /home/deepanshu/ml_playground/jester_freezed/tf_model.pb --output_dir /home/deepanshu/open_vino/udacity_project_custom_model/ --input_shape=[1,30,64,64,1] --data_type FP32
Теперь я столкнулся с другой проблемой. Проблема здесь заключается в пункте нет. 97 в этой записи .
Таким образом, моя модель содержит цикл, а оптимизатор модели не знает способа ее преобразования. Кто-нибудь сталкивался с этой проблемой раньше?
Пожалуйста, помогите.
Вот модель .
Вот определение модели в керасах
from keras.models import Sequential
from keras.layers import Conv3D , MaxPool3D,Flatten ,Dense
from keras.layers.convolutional_recurrent import ConvLSTM2D
import keras
model = Sequential()
model.add(Conv3D(32, (3, 3, 3),
name="conv1" , input_shape=(30, 64, 64,1) , data_format='channels_last',
activation='relu') )
model.add(MaxPool3D(pool_size=(2, 2, 2), data_format='channels_last'))
model.add(Conv3D(64, (3, 3, 3), activation='relu', name="conv2", data_format='channels_last'))
model.add(MaxPool3D(pool_size=(2, 2,2), data_format='channels_last'))
model.add(ConvLSTM2D(40, (3, 3)))
model.add(Flatten(name="flatten"))
model.add(Dense(128, activation='relu', name="d1"))
model.add(Dense(6, activation='softmax', name="output"))