我想让 2 个或更多相同的网络输出到另一个网络
def getSimpleAdditionModel():
seq_conv_model = [
layers.Dense(32, activation='relu', input_shape=[2]),
layers.Dense(32, activation='relu'),
layers.Dense(1)
]
seq_model = tf.keras.Sequential(seq_conv_model)
return seq_model
def outputModel(output1, output2):
deq = [
layers.Dense(32,activation='relu')(Concatenate([output1, output2])),
layers.Dense(32, activation='relu'),
layers.Dense(1)
]
seq_model = tf.keras.Sequential(deq)
return seq_model
input1 = layers.Input(shape=(2,))
input2 = layers.Input(shape=(2,))
seqmodel = getSimpleAdditionModel()
output_x1 = seqmodel(input1)
output_x2 = seqmodel(input2)
model = models.Model([input1, input2], outputModel(output_x1, output_x2))
optimizer = tf.keras.optimizers.RMSprop(0.001)
model.compile(loss='mse',
optimizer=optimizer,
metrics=['mae', 'mse'])
但是当我试图将 output_x1 和 output_x2 作为输入到另一个网络时,我在 outputModel 中遇到了一些错误。我试过没有连接但没有成功。
我想实现与文章类似的东西: https ://medium.com/predict/face-recognition-from-scratch-using-siamese-networks-and-tensorflow-df03e32f8cd0 不使用卷积神经网络
对于上述代码的一些错误,我得到:
TypeError: The added layer must be an instance of class Layer. Found: Tensor("dense_6/Identity:0", shape=(None, 32), dtype=float32)
Stack is :
File "SiameseAddition.py", line 53, in <module>
model = models.Model([input1, input2], outputModel(output_x1, output_x2))
File "SiameseAddition.py", line 40, in outputModel
seq_model = tf.keras.Sequential(deq)
如果在 outputModel 方法中,我改为执行以下操作:
def outputModel(output1, output2):
deq = [
layers.Dense(32,activation='relu')(output1, output2),
TypeError: call() takes 2 positional arguments but 3 were given
File "SiameseAddition.py", line 40, in <module>
model = models.Model([input1, input2], outputModel(output_x1, output_x2))