Python 如何在Keras Functional API中创建具有多个共享层的模型?
我想有一个模型,有两个输入,几个隐藏层共享权重,然后是单独的输出层 我看到了这个问题及其公认的答案:。这正是我想要实现的,只要有多个共享的密集层 基本上,他们就是这样做的:Python 如何在Keras Functional API中创建具有多个共享层的模型?,python,tensorflow,keras,deep-learning,functional-api,Python,Tensorflow,Keras,Deep Learning,Functional Api,我想有一个模型,有两个输入,几个隐藏层共享权重,然后是单独的输出层 我看到了这个问题及其公认的答案:。这正是我想要实现的,只要有多个共享的密集层 基本上,他们就是这样做的: (我对其进行了一些修改,使其具有两个独立的输出层) 我也希望这样做,只需使用两个共享隐藏层: ip_shape1 = tf.keras.layers.Input(shape=(5,)) ip_shape2 = tf.keras.layers.Input(shape=(5,)) dense = tf.keras.layers
(我对其进行了一些修改,使其具有两个独立的输出层) 我也希望这样做,只需使用两个共享隐藏层:
ip_shape1 = tf.keras.layers.Input(shape=(5,))
ip_shape2 = tf.keras.layers.Input(shape=(5,))
dense = tf.keras.layers.Dense(1, activation="sigmoid", kernel_initializer="ones", input_shape=(5,))
dense = tf.keras.layers.Dense(1, activation="sigmoid", kernel_initializer="ones")(dense)
op1 = dense(ip_shape1)
op2 = dense(ip_shape2)
op1 = tf.keras.layers.Dense(1,activation=tf.nn.sigmoid)(op1)
op2 = tf.keras.layers.Dense(1,activation=tf.nn.sigmoid)(op2)
model = tf.keras.models.Model(inputs=[ip_shape1, ip_shape2], outputs=[op1,op2])
但当我尝试这样做时,我得到了一个错误:
TypeError: Inputs to a layer should be tensors. Got: <tensorflow.python.keras.layers.core.Dense object at 0x7f7286dc7c70>
TypeError:层的输入应该是张量。得到了:
错误出现在以下行中:
dense = tf.keras.layers.Dense(1, activation="sigmoid", kernel_initializer="ones")(dense)
本质上,您正在使用稠密
(另一个Keras层)调用稠密层。相反,层tf.keras.layers.density
需要一个张量作为输入
我假设你想要组成两个共享的密集层。这可以通过以下方式实现:
dense_1 = tf.keras.layers.Dense(1, activation="sigmoid", kernel_initializer="ones", input_shape=(5,))
dense_2 = tf.keras.layers.Dense(1, activation="sigmoid", kernel_initializer="ones")
op1 = dense_1(ip_shape1)
op1 = dense_2(op1)
op2 = dense_1(ip_shape2)
op2 = dense_2(op2)
注意:未测试。谢谢,我测试过了,它可以工作。从模型摘要判断,这就是我想要实现的目标。
dense_1 = tf.keras.layers.Dense(1, activation="sigmoid", kernel_initializer="ones", input_shape=(5,))
dense_2 = tf.keras.layers.Dense(1, activation="sigmoid", kernel_initializer="ones")
op1 = dense_1(ip_shape1)
op1 = dense_2(op1)
op2 = dense_1(ip_shape2)
op2 = dense_2(op2)