Tensorflow 无法将tf.keras.layers.ConvLSTM2D层转换为open vino中间表示

Tensorflow 无法将tf.keras.layers.ConvLSTM2D层转换为open vino中间表示,tensorflow,keras,lstm,intel,openvino,Tensorflow,Keras,Lstm,Intel,Openvino,我试图将tensorflow中经过训练的模型转换为中间表示 我有一个下面给出的表格模型 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=

我试图将tensorflow中经过训练的模型转换为中间表示

我有一个下面给出的表格模型

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)
我试着把模型转换成IR。模型是

我已经在tensorflow 1.15中训练了这个模型。目前不支持Tensorflow 2.0

现在我试着运行这个命令

python3/opt/intel/openvino/deployment\u tools/model\u optimizer/mo\u tf.py--保存的\u model\u dir jester\u trained\u models/3dcnn basic/--输出\u dir/home/deepanshu/open\u vino/udacity\u项目\u自定义\u模型/

现在我得到了以下错误

模型优化器参数:

通用参数:

  • 输入模型的路径:无

  • 生成IR的路径:/home/deepanshu/open\u vino/udacity\u project\u custom\u model/

  • IR输出名称:已保存的\u模型

  • 日志级别:错误

  • 批处理:未指定,从模型继承

  • 输入层:未指定,从模型继承

  • 输出层:未指定,从模型继承

  • 输入形状:未指定,从模型继承

  • 平均值:未指定

  • 比例值:未指定

  • 比例系数:未指定

  • 红外光谱精度:FP32

  • 启用熔断:真

  • 启用分组卷积融合:True

  • 将平均值移动到预处理部分:False

  • 反向输入通道:错误

TensorFlow特定参数:

  • 文本protobuf格式的输入模型:False

  • 张力板的模型转储路径:无

  • 带有TensorFlow自定义层实现的共享库列表:无

  • 使用输入/输出节点名称更新配置文件:无

  • 使用用于生成具有对象检测API的模型的配置文件:无

  • 卸载操作:无

  • 要卸载的模式:无

  • 使用配置文件:无

模型优化器版本:2020.1.0-61-gd349c3ba4a

[ERROR]提取节点conv3d_model/conv_lst_m2d/bias/Read/ReadVariableOp的属性时发生意外异常。原始异常消息:“ascii”编解码器无法解码位置1中的字节0xc9:序号不在范围内(128)

据我所知,是tf.keras.layers.ConvLSTM2D(40,(3,3))引起了问题。我被困在这里了。有人能告诉我在哪里可以继续吗

谢谢

编辑该问题 现在我拒绝了上面的tensorflow实现,并使用了keras。我开发的h5模型被转换成.pb格式

现在我在这个.pb文件上运行了模型优化器。使用命令

python3/opt/intel/openvino/deployment\u tools/model\u optimizer/mo\u tf.py--input\u model/home/deepanshu/ml\u playerd/jester\u freezed/tf\u model.pb--output\u dir/home/deepanshu/open\u vino/udacity\u project\u custom\u model/--input\u shape=[1,30,64,1]--数据类型FP32

现在我面临另一个问题。这里的问题是关于这一点的第97点

所以我的模型包含一个循环,而模型优化器不知道如何转换它。以前有人遇到过这个问题吗

请帮忙

这是你的电话号码

以下是keras中模型的定义


从keras.models导入顺序
从keras.layers导入Conv3D、MaxPool3D、展平、密集
来自keras.layers.voluminal_ConvLSTM2D
进口干酪
模型=顺序()
模型添加(Conv3D(32,(3,3,3),
name=“conv1”,输入\u shape=(30,64,64,1),数据\u format='channels\u last',
激活(='relu'))
添加(MaxPool3D(池大小=(2,2,2),数据格式=(通道最后一次))
添加(Conv3D(64,(3,3,3),activation='relu',name=“conv2”,data\u format='channels\u last'))
添加(MaxPool3D(池大小=(2,2,2),数据格式=(通道最后一次))
模型添加(ConvLSTM2D(40,(3,3)))
model.add(展平(name=“展平”))
model.add(密集型(128,activation='relu',name=“d1”))
添加(密集(6,activation='softmax',name=“output”))

实际上,英特尔建议的从h5转换为.pb的脚本不够好。始终使用中的代码将keras模型转换为.pb

获得.pb文件后,现在使用将模型转换为IR

python3 /opt/intel/openvino/deployment_tools/model_optimizer/mo_tf.py --input_model ml_playground/try_directory/tf_model.pb   --output_dir /home/deepanshu/open_vino/udacity_project_custom_model/  --input_shape=[1,30,64,64,1] --data_type FP32

执行此脚本后,我们可以获得keras模型的中间表示

实际上,英特尔建议的从h5转换为.pb的脚本不够好。始终使用中的代码将keras模型转换为.pb

获得.pb文件后,现在使用将模型转换为IR

python3 /opt/intel/openvino/deployment_tools/model_optimizer/mo_tf.py --input_model ml_playground/try_directory/tf_model.pb   --output_dir /home/deepanshu/open_vino/udacity_project_custom_model/  --input_shape=[1,30,64,64,1] --data_type FP32
执行此脚本后,我们可以获得keras模型的中间表示