【发布时间】:2019-02-25 11:16:37
【问题描述】:
我已经按照 keras 在本指南中的描述构建了以下具有多输入和多输出的模型。
## define the model
EMBEDDING_SIZE = 128
HIDDEN_LAYER_SIZE = 64
BATCH_SIZE = 32
NUM_EPOCHS = 10
# first input model
main_input = Input(shape=(50,), dtype='int32', name='main_input')
embedding = Embedding(MAX_NB_WORDS, EMBEDDING_SIZE,
input_length=MAX_SEQUENCE_LENGTH)(main_input)
lstm_out = LSTM(HIDDEN_LAYER_SIZE)(embedding)
auxiliary_output = Dense(4, activation='sigmoid', name='aux_output')(lstm_out)
# second input model
auxiliary_input = Input(shape=(5,), name='aux_input')
x = concatenate([lstm_out, auxiliary_input])
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)
x = Dense(64, activation='relu')(x)
main_output = Dense(4, activation='sigmoid', name='main_output')(x)
model = Model(inputs=[main_input, auxiliary_input], outputs=[main_output, auxiliary_output])
model.compile(optimizer='rmsprop',
loss={'main_output': 'categorical_crossentropy', 'aux_output': 'categorical_crossentropy'},
loss_weights={'main_output': 1., 'aux_output': 0.2})
model.fit([x1train, x2train], [ytrain, ytrain],
epochs=NUM_EPOCHS, batch_size=BATCH_SIZE,
validation_data=([x1test, x2test], [ytest, ytest]))
在下一步中,我还想评估我的模型。我建议为它运行这段代码:
score, acc = model.evaluate(x={'main_input': x1test, 'aux_input': x2test},
y={'main_output': ytest, 'aux_output': ytest},
batch_size=BATCH_SIZE)
但使用该代码时,我收到错误“ValueError:要解压的值太多(预期为 2)”
所以我想我可能会得到两个输出的分数和准确性,并尝试了这段代码:
score1, score2, acc1, acc2 = model.evaluate(x={'main_input': x1test, 'aux_input': x2test},
y={'main_output': ytest, 'aux_output': ytest},
batch_size=BATCH_SIZE)
但现在我收到错误“ValueError: no enough values to unpack (expected 4, got 3)”
那我做错了什么?老实说,我只是对 main_output 的准确性感兴趣。
【问题讨论】:
标签: python python-3.x tensorflow keras