gpt4 book ai didi

python - Keras 中的多任务学习

转载 作者:行者123 更新时间:2023-12-01 15:11:39 26 4
gpt4 key购买 nike

我有两个不同的数据集,我想尝试多任务学习。我的问题是我能找到的所有示例都有两个不同的训练输入,但标签是相同的。我的问题是:我可以有不同的标签吗?这是我现在的代码:

input1 = Sequential()
input1.add(Embedding(vocabulary_size, embedding_size,
input_length=longest_sen_input1))
input1.add(Bidirectional(LSTM(units=embedding_size)))
input1.add(Dense(len(document), activation='softmax'))

input2 = Sequential()
input2.add(Embedding(vocabulary_size, embedding_size,
input_length=longest_sen_input2))
input2.add(Bidirectional(LSTM(units=embedding_size)))
input2.add(Dense(len(document), activation='softmax'))

model = Sequential()
model.add(Merge([input1, input2], mode='sum'))
model.add(Dense(len(document), activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer='adam')

model.fit([X_train_input1, X_train_input2], [Y_train_input1, Y_train_input2], epochs=100)

我尝试插入 [Y_train_input1, Y_train_input2],但出现此错误:

Error when checking model target: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 2 arrays: [array([[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
...,
[0., 0., 0., ..., 1., 0., 0.],
[0., 0., 0., ..., 0., 0., 0....

有人知道如何使用返回共同预测的两个输入(X_train_input1/Y_train_input1 和 X_train_input2/Y_train_input2)执行多任务学习吗?

编辑我的模型现在似乎可以工作了,我只是改变了

model.fit([X_train_input1, X_train_input2], [Y_train_input1, Y_train_input2], epochs=100)

model.fit([X_train_input1, X_train_input2], Y_train, epochs=100)

但后来我尝试像这样测试模型

multitask_model.predict_classes(X_test)

我有这个错误:

ValueError: Error when checking model : the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 2 array(s), but instead got the following list of 1 arrays: [array([[  0,   0,   0, ...,  13,   8, 134],
[ 0, 0, 0, ..., 33, 87, 19],
[ 0, 0, 0, ..., 27, 1, 4],
...,
[ 0, 0, 0, ..., 1, 10, 8],
[ 0...

我错过了什么?

最佳答案

您的模型只有一个输出,而您传递了两个:Y_train_input1Y_train_input2

如果您的目标不是合并两个模型,那么您应该将它们分开。当您合并/求和输出时,您最终只会得到一个输出。

您真的打算拥有两个不同的独立模型,而它们之间没有任何交互吗?

  • 要么你有一个共同的输出和一个共同的 Y_train,要么
  • 您有两个独立的输出和两个不同的目标。

关于python - Keras 中的多任务学习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53352954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com