【发布时间】:2020-01-16 10:42:04
【问题描述】:
我正在尝试实现一个自动编码器,它可以获取 3 个不同的输入并融合这三个图像。我想在编码器中获取层的输出并将其与解码器中的层连接,但是当我运行它时,我得到图形断开错误。 这是我的代码:
def create_model(input_shape):
input_1 = keras.layers.Input(input_shape)
input_2 = keras.layers.Input(input_shape)
input_3 = keras.layers.Input(input_shape)
network = keras.models.Sequential([
keras.layers.Conv2D(32, (7, 7), activation=tf.nn.relu, padding='SAME',input_shape=input_shape),
keras.layers.Conv2D(32, (7, 7), activation=tf.nn.relu, padding='SAME', name = 'a'),
keras.layers.AvgPool2D((2, 2)),
keras.layers.BatchNormalization(),
keras.layers.Dropout(0.3)])
encoded_1 = network(input_1)
encoded_2 = network(input_2)
encoded_3 = network(input_3)
a = network.get_layer('a').output
x = keras.layers.Concatenate()([encoded_1,encoded_2,encoded_3])
x = keras.layers.Conv2D(32, (3, 3), activation=tf.nn.relu, padding='SAME')(x)
x = keras.layers.UpSampling2D((2,2))(x)
x = keras.layers.BatchNormalization()(x)
x = keras.layers.Dropout(0.3)(x)
x = keras.layers.Concatenate()([x,a])
x = keras.layers.Conv2D(32, (3, 3), activation=tf.nn.relu, padding='SAME')(x)
x = keras.layers.UpSampling2D((2,2))(x)
x = keras.layers.BatchNormalization()(x)
x = keras.layers.Dropout(0.3)(x)
decoded = keras.layers.Conv2D(3, (3, 3), activation=tf.nn.relu, padding='SAME')(x)
final_net= keras.models.Model(inputs=[input_1,input_2,input_3],outputs=decoded)
return final_net
错误是:
图形断开连接:无法在“conv2d_1_input”层获取张量 Tensor("conv2d_1_input:0", shape=(?, 128, 128, 1), dtype=float32) 的值。访问以下之前的层没有问题:['input_6', 'input_5', 'input_4', 'sequential_1', 'sequential_1', 'sequential_1', 'concatenate', 'conv2d_2']
这是因为连接了 [x,a]。我试图从三个图像中获取层的输出,例如:
encoder_1.get_layer('a').output
encoder_2.get_layer('a').output
encoder_3.get_layer('a').output
但我得到一个错误“'Tensor' object has no attribute 'output'”
【问题讨论】:
-
a = network.get_layer('a').output这是有问题的行。您试图在不提供实际输入的情况下获得层的输出。你到底想在这里做什么? -
我想将这三幅图像输入网络,然后为每幅图像获取层 'a' 的输出,然后将它们连接起来并在解码器中使用。例如,我连接'a1,a2,a3',它们分别是每个图像的输出,然后在解码器中使用它们。我想将其用作跳过连接层。
-
澄清:'a1,a2,a3' 是每个图像的层 'a' 的输出,我想将它们连接起来并在解码器中使用它们跨度>
标签: python tensorflow keras autoencoder