You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow C++加载PB模型出现remapper failed错误的咨询

TensorFlow C++加载PB模型时Grappler优化器报错问题

问题背景

使用Python 3.12.5搭配TensorFlow 2.17.0训练Keras模型并导出为PB文件,计划部署到Windows平台的C++软件中做推理,采用TensorFlow for C 2.15.0作为DLL。加载PB模型时出现错误,但当前推理功能正常;切换到TensorFlow for C 2.13.0时无此错误,但希望使用新版本库。

错误日志

2024-09-01 16:09:38.024565: E tensorflow/core/grappler/optimizers/meta_optimizer.cc:961] remapper failed: INVALID_ARGUMENT: Mutation::Apply error: fanout 'generator/tf.concat_6/concat' exist for missing node 'generator/conv2d/BiasAdd'.

核心疑问

  • 该错误是否需要重视?
  • 是否会导致性能损失?
  • 若有影响,该如何修复?

补充信息

模型生成代码

n_channels = 3 # 3 for RGB or 1 for grayscale
def generator():
    layers = []
    filters = [64, 128, 256, 512, 512, 512, 512, 512, 512, 512, 512, 512, 256, 128, 64] # filter layers 0 - 14
    input = tf.keras.layers.Input(shape = (None, None, n_channels), name = "gen_input_image")
    for i in range(1 + len(filters)):
        if i == 0: # layer 0 convolution
            convolved = tf.keras.layers.Conv2D(filters[0], kernel_size = 4, strides = (2, 2), padding = "same", kernel_initializer = tf.initializers.GlorotUniform())(input)
            layers.append(convolved)
        elif 1 <= i <= 7: # convolution layers
            rectified = tf.keras.layers.LeakyReLU(negative_slope = 0.2)(layers[-1])
            convolved = tf.keras.layers.Conv2D(filters[i], kernel_size = 4, strides = (2, 2), padding = "same", kernel_initializer = tf.initializers.GlorotUniform())(rectified)
            normalized = tf.keras.layers.LayerNormalization()(convolved)
            layers.append(normalized)
        elif 8 <= i <= 14: # deconvolution layers
            if i == 8:
                rectified = tf.keras.layers.ReLU()(layers[-1])
            else:
                concatenated = tf.keras.layers.Concatenate(axis = 3)([layers[-1], layers[15 - i]])
                rectified = tf.keras.layers.ReLU()(concatenated)
            deconvolved = tf.keras.layers.Conv2DTranspose(filters[i], kernel_size = 4, strides = (2, 2), padding = "same", kernel_initializer = tf.initializers.GlorotUniform())(rectified)
            normalized = tf.keras.layers.LayerNormalization()(deconvolved)
            layers.append(normalized)
        else: # layer 15
            concatenated = tf.keras.layers.Concatenate(axis = 3)([layers[-1], layers[0]])
            rectified = tf.keras.layers.ReLU()(concatenated)
            deconvolved = tf.keras.layers.Conv2DTranspose(n_channels, kernel_size = 4, strides = (2, 2), padding = "same", kernel_initializer = tf.initializers.GlorotUniform())(rectified)
            rectified = tf.keras.layers.ReLU()(deconvolved)
            output = tf.keras.layers.Subtract()([input, rectified])
    return tf.keras.Model(inputs = input, outputs = output, name = "generator")

模型可视化代码

from keras.utils import plot_model
plot_model(model, to_file='model.png', show_shapes=True, show_dtype=True, show_layer_names=True)

额外说明

  • 模型在Python环境中运行正常,C++端加载后推理功能也正常,推测错误与Grappler优化器相关。
  • 怀疑问题可能和输入形状设为(None, None)有关,模型需要支持≥256的任意图像尺寸,此前这样设置无问题。
  • 曾找到类似问题但无有效回复,且无权限评论对应线程。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 23:59:53