最近在看tensorflow.keras的多输入多输出时,碰到了这个问题,在这里记录一下。
首先给出报错代码:
# 两个输入
main_input = tf.keras.layers.Input(shape=(784,),dtype=tf.float32,name="main_input")
auxiliary_input = tf.keras.layers.Input(shape=784,),dtype=tf.float32,name="auxiliary_input")
## 网络1
x = tf.keras.layers.Dense(128,activation="relu")(main_input)
dense_out = tf.keras.layers.Dense(10,activation="softmax")(x)
output1 = tf.keras.layers.Dense(10,activation="softmax")(dense_out) ## 输出1
## 网络2
x = tf.keras.backend.concatenate([dense_out, auxiliary_input])
x = tf.keras.layers.Dense(128,activation="relu")(x)
x = tf.keras.layers.Lambda(tf.keras.layers.Dropout(0.5))(x)
x = tf.keras.layers.Dense(128,activation="relu")(x)
main_output = tf.keras.layers.Dense(10,activation="softmax")(x) # 输出2
model = tf.keras.models.Model(inputs=[main_input,auxiliary_input], outputs=[main_output,output1])
optimizer = tf.keras.optimizers.Adam(0.01)
model.compile(optimizer=optimizer,loss=tf.keras.loss

在学习tensorflow.keras的多输入多输出时遇到错误:ValueError: Output tensors to a Model must be the output of a TensorFlow `Layer`。错误源于中间操作没有Keras层的历史信息。解决方案是使用tf.keras.layers.Lambda封装tf.keras.backend.concatenate函数。参考了相关博客文章进行问题解决。
最低0.47元/天 解锁文章
31万+

被折叠的 条评论
为什么被折叠?



