我试图在Keras中实现一个序列来排序学习任务。 我希望模型学习以下转换。 F(X) - > ÿ 其中X是
[[0., 0., 1., 0., 1., 1., 0., 0., 0., 0.],
[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 1., 0., 1., 0., 0., 0., 0., 0., 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., 0.],
[0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 1., 0., 0., 0., 0., 0.]]
和Y由
给出 [[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
[0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
[0., 1., 0., 1., 0., 0., 0., 0., 0., 0.]]
X和Y数组中的每个 列 代表句子中的单词。但是,每个单词在输入序列中有十个特征(即X),在Y中只有五个特征。我尝试使用以下代码实现模型。
model = Sequential()
LAYER_NUM = 3
HIDDEN_DIM = 900
model = Sequential()
model.add(Bidirectional(LSTM(HIDDEN_DIM, return_sequences=True), input_shape = (None, 10)))
print("YEAH!")
for i in range(LAYER_NUM - 1):
model.add(Bidirectional(LSTM(HIDDEN_DIM, return_sequences=True)))
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(5)))
model.add(Activation('softmax'))
model.compile(loss="categorical_crossentropy", optimizer="rmsprop", metrics=["accuracy"])
然而,这引起了以下错误。
ValueError:检查目标时出错:预期activation_3有 形状(10,5)但有阵列形状(5,10)
有人可以指导我吗?
答案 0 :(得分:1)
错误消除了它。你说列代表单词,在Keras模型中你会有行。因此,您必须转置数据X.T
和Y.T
来修复它。