【发布时间】:2020-05-04 17:59:45
【问题描述】:
我正在尝试在 keras 中创建一个 LSTM/GRU 模型,以将给定的文章分类为 4 个类之一。
input > embedding layer > LSTM/GRU layer > [context vector] > Dense(softmax activation) > output class
在训练输入数据中有39978篇文章,每篇文章有20个句子,每个句子有20个词。目标变量有4个目标类。
x_train.shape 是 (39978, 20, 20) 和
y_train.shape 是(39978, 4)
embedding_matrix.shape 是 (27873, 100) embedding_matrix 是在具有 glove.6B.100d.txt
我正在尝试创建如下所示的顺序模型
vocab_size = len(tokenizer.word_index.keys()) # 27873
MAX_SENT_LENGTH = 20
model = Sequential()
embedding_dimentations = embedding_matrix.shape[1]
e = Embedding(vocab_size,
embedding_dimentations,
weights=[embedding_matrix],
input_length=MAX_SENT_LENGTH,
trainable=False)
model.add(e)
model.add(Bidirectional(GRU(embedding_dimentations, dropout=0.25, recurrent_dropout=0.25)))
model.add(Dense(4, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
如果我合适的话,就在上面的模型上
batch_size = 128
epochs = 3
print('Training.....')
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
validation_split=.2)
我收到以下错误
ValueError:检查输入时出错:预期 embedding_6_input 为 2 维,但得到的数组形状为 (39978, 20, 20)
我尝试在 Embedding() 中指定输入形状元组,但它不起作用。有人能指出我正确的方向吗?
谢谢
【问题讨论】:
标签: python keras nlp keras-layer