我们如何编译多输出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
中是不合理的。您需要选择 rmsprop
或 adam
作为主要优化器。
正如标题所说,我们如何编译具有多个输出的 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
中是不合理的。您需要选择 rmsprop
或 adam
作为主要优化器。