gpt4 book ai didi

python - Keras - LSTM 密集层中的输入形状错误

转载 作者:行者123 更新时间:2023-12-01 09:02:57 25 4
gpt4 key购买 nike

我正在尝试使用 Keras 构建 lstm 文本分类器。

这是模型结构:

model_word2vec = Sequential()
model_word2vec.add(Embedding(input_dim=vocabulary_dimension,
output_dim=embedding_dim,
weights=[word2vec_weights,
input_length=longest_sentence,
mask_zero=True,
trainable=False))
model_word2vec.add(LSTM(units=embedding_dim, dropout=0.25, recurrent_dropout=0.25, return_sequences=True))
model_word2vec.add(Dense(3, activation='softmax'))
model_word2vec.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])


results = model_word2vec.fit(X_tr_word2vec, y_tr_word2vec, validation_split=0.16, epochs=3, batch_size=128, verbose=0)

其中y_tr_word2vec是一个3维one-hot编码变量。

当我运行上面的代码时,出现以下错误:

ValueError: Error when checking model target: expected dense_2 to have 3 dimensions, but got array with shape (15663, 3)

我认为问题可能与 y_tr_word2vec 形状或批量大小 维度有关,但我不确定。

更新:

我已将 return_sequences=Falsey_tr_word2vecone-hot 更改为 categorical1 神经元位于密集层,现在我使用 sparse_categorical_crossentropy 而不是 categorical_crossentropy

现在,我收到此错误:ValueError:以 10 为基数的 int() 的文字无效:'countess'

因此现在我认为,在 fit() 期间,包含句子的输入向量 X_tr_word2vec 出现了问题。

最佳答案

问题出在这段代码

model_word2vec.add(LSTM(units=dim_embedding, dropout=0.25, recurrent_dropout=0.25, return_sequences=True))
model_word2vec.add(Dense(3, activation='softmax'))

您设置了 return_sequences=True ,这意味着 LSTM 将向密集层返回 3D 数组,而密集层不需要 3D 数据...所以删除 return_sequences=True

model_word2vec.add(LSTM(units=dim_embedding, dropout=0.25, recurrent_dropout=0.25))
model_word2vec.add(Dense(3, activation='softmax'))

为什么要设置 return_sequences=True?

关于python - Keras - LSTM 密集层中的输入形状错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52318477/

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