Tensorflow 关于内核权重的TensorRT 5 UFFParser错误
我试着转换,然后用张量流模型进行推理 我使用tf.keras生成一个Tensorflow模型:Tensorflow 关于内核权重的TensorRT 5 UFFParser错误,tensorflow,machine-learning,nvidia,tensorrt,Tensorflow,Machine Learning,Nvidia,Tensorrt,我试着转换,然后用张量流模型进行推理 我使用tf.keras生成一个Tensorflow模型: model = Sequential() model.add(Conv2D(64, kernel_size=3, activation='relu', input_shape=(224,224,3), name='image')) model.add(Conv2D(32, kernel_size=3, activation='relu')) model.add(Flatten()) model.add
model = Sequential()
model.add(Conv2D(64, kernel_size=3, activation='relu', input_shape=(224,224,3), name='image'))
model.add(Conv2D(32, kernel_size=3, activation='relu'))
model.add(Flatten())
model.add(Dense(num_classes, activation='softmax', name='output'))
我训练模型,然后转换文件,保存.pb tensorflow冻结图形文件,转换为UFF,使用:
uff_model = uff.from_tensorflow_frozen_model(
frozen_file="model/tensorflow/simplemodel.pb",
output_nodes=["output/Softmax"],
output_filename="model/tensorrt/simplemodel.uff")
当我用以下命令解析模型时:
TRT_LOGGER = trt.Logger(trt.Logger.INFO)
builder = trt.Builder(TRT_LOGGER)
network = builder.create_network()
parser = trt.UffParser()
parser.register_input("image_input", (1, 224, 224, 3))
parser.register_output("output/SoftMax")
parser.parse("model/tensorrt/simplemodel.uff", network)
我得到了这个错误:
[TensorRT] INFO: UFFParser: parsing image_input
[TensorRT] INFO: UFFParser: parsing image/kernel
[TensorRT] INFO: UFFParser: parsing image/Conv2D
[TensorRT] INFO: UFFParser: parsing image/bias
[TensorRT] INFO: UFFParser: parsing image/BiasAdd
[TensorRT] ERROR: image/Conv2D: kernel weights has count 1728 but 129024 was expected
[TensorRT] ERROR: UFFParser: Parser error: image/BiasAdd: The input to the Scale Layer is required to have a minimum of 3 dimensions.
为什么内核权重计数会出错?我将输入形状设置为正确的大小(224244,3…),这是我的模型:
谢谢
Igor使用NCHW格式。因此
parser.register_input("image_input", (1, 224, 224, 3))
应该是
parser.register_input("image_input", (1, 3, 224, 224))
在您的例子中,假设224是输入中的通道数。因此权重参数的数量为224*64*3*3=129204(输入通道*输出通道*内核高度*内核宽度)是否可以检查uff模型的输入形状和输入名称?我认为问题出在输入的某个地方。uff模型包含:节点{id:“image_input”操作:“input”字段{key:“dtype”值{dtype:DT_FLOAT32}字段{key:“shape”值{I_list{val:-1 val:224 val:224 val:3} } } }
parser.register_input("image_input", (1, 3, 224, 224))