我们如何编译多输出keras模型

How do we compile a multiple output keras model

正如标题所说,我们如何编译具有多个输出的 keras 功能模型?

# Multiple Outputs
from keras.utils import plot_model
from keras.models import Model
from keras.layers import Input
from keras.layers import Dense
from keras.layers.recurrent import LSTM
from keras.layers.wrappers import TimeDistributed

# input layer
visible = Input(shape=(4,2))
# feature extraction
extract = LSTM(10, return_sequences=True)(visible)
# classification output
class11 = LSTM(10)(extract)
class12 = Dense(8, activation='relu')(class11)
class13 = Dense(8, activation='relu')(class12)

output1 = Dense(9, activation='softmax')(class13)

# sequence output
output2 = TimeDistributed(Dense(1, activation='tanh'))(extract)
# output

model = Model(inputs=visible, outputs=[output1, output2])

# summarize layers
print(model.summary())

有两个输出分支,具有两种不同类型的输出值。第一个输出是具有 softmax 激活函数的密集层,另一个输出是具有 tanh 激活函数的时间分布层。

我们应该如何编译这个模型。我这样试过

model.compile(optimizer=['rmsprop','adam'],
              loss=['categorical_crossentropy','mse'],
              metrics=['accuracy'])

但是它给出了这个错误

ValueError: ('Could not interpret optimizer identifier:', ['rmsprop', 'adam'])

问题在于你想设置两个独立的优化器,这在 keras 中是不合理的。您需要选择 rmspropadam 作为主要优化器。