使用 keras.utils.plot_model 构建的 Tensorflow 模型图不显示串联
The Tensorflow model graph built with keras.utils.plot_model does not show concatenations
我正在尝试构建一个密集块,所以我写了一个像这样的简单示例:
input_layer = Input(shape=(HEIGHT, WIDTH, 3))
layer1 = Conv2D(1, (3, 3), activation="relu", padding="same")(input_layer)
layer2 = Conv2D(2, (3, 3), activation="relu", padding="same")(layer1)
layer3 = Conv2D(3, (3, 3), activation="relu", padding="same")(layer2)
layer4 = Conv2D(4, (3, 3), activation="relu", padding="same")(layer3)
concatenate([layer3, layer2])
concatenate([layer4, layer3])
concatenate([layer4, layer2])
model = keras.Model(inputs=input_layer, outputs=layer4, name="Dense_block")
keras.utils.plot_model(model, "info.png", show_shapes=True)
但是我得到的图表不包含任何连接:
可能是我的代码有问题?
由于 model = keras.Model(inputs=input_layer, outputs=layer4, name="Dense_block")
与 outputs=layer4
的调用,第 1 层至第 4 层已连接并成为模型的一部分。您的连接操作未连接。
您可以通过定义一个新层来解决此问题,例如 layer5 = concatenate([layer3, layer2])
并将该层传递给模型语句中的 outputs
。
对于连接本身,我建议您使用 Keras 的连接层:tf.keras.layers.Concatenate
。 Reference here.
layer5 = tf.keras.layers.Concatenate()([layer3, layer2])
model = keras.Model(inputs=input_layer, outputs=layer5, name="Dense_block")
我正在尝试构建一个密集块,所以我写了一个像这样的简单示例:
input_layer = Input(shape=(HEIGHT, WIDTH, 3))
layer1 = Conv2D(1, (3, 3), activation="relu", padding="same")(input_layer)
layer2 = Conv2D(2, (3, 3), activation="relu", padding="same")(layer1)
layer3 = Conv2D(3, (3, 3), activation="relu", padding="same")(layer2)
layer4 = Conv2D(4, (3, 3), activation="relu", padding="same")(layer3)
concatenate([layer3, layer2])
concatenate([layer4, layer3])
concatenate([layer4, layer2])
model = keras.Model(inputs=input_layer, outputs=layer4, name="Dense_block")
keras.utils.plot_model(model, "info.png", show_shapes=True)
但是我得到的图表不包含任何连接:
可能是我的代码有问题?
由于 model = keras.Model(inputs=input_layer, outputs=layer4, name="Dense_block")
与 outputs=layer4
的调用,第 1 层至第 4 层已连接并成为模型的一部分。您的连接操作未连接。
您可以通过定义一个新层来解决此问题,例如 layer5 = concatenate([layer3, layer2])
并将该层传递给模型语句中的 outputs
。
对于连接本身,我建议您使用 Keras 的连接层:tf.keras.layers.Concatenate
。 Reference here.
layer5 = tf.keras.layers.Concatenate()([layer3, layer2])
model = keras.Model(inputs=input_layer, outputs=layer5, name="Dense_block")