Как связать LSTM с Dense? - PullRequest
       81

Как связать LSTM с Dense?

0 голосов
/ 26 января 2020

При попытке соединить LSTM с Dense выдает ошибку (при попытке обучения):

input = Input(shape=(x_train.shape[1], None))
X = Embedding(num_words, max_article_len)(input)
X = LSTM(128, return_sequences=True, dropout = 0.5)(X)
X = LSTM(128)(X)
X = Dense(32, activation='softmax')(X)

model = Model(inputs=[input], outputs=[X])
...
>>> ValueError: Error when checking target: expected dense to have shape (32,) but got array with shape (1,)

Я пробовал разные варианты подключения, но ошибка повторяется:

X, h, c = LSTM(128, return_sequences=False, return_state=True, dropout = 0.5)(X)
X = Dense(32, activation='softmax')(X)
>>> ValueError: Error when checking target: expected dense to have shape (32,) but got array with shape (1,)

Есть ли варианты решения по функциональному API / Sequential?

Код преобразования данных:

train = pd.read_csv('train.csv')
articles = train['text']
y_train = train['lang']

num_words = 50000
max_article_len = 20

tokenizer = Tokenizer(num_words=num_words)
tokenizer.fit_on_texts(articles)

sequences = tokenizer.texts_to_sequences(articles)
x_train = pad_sequences(sequences, maxlen=max_article_len, padding='post')

x_train.shape
>>> (18974, 100)
y_train.shape
>>> (18974,)

1 Ответ

0 голосов
/ 26 января 2020

Последний параметр должен быть установлен на False;

X = LSTM(128, return_sequences=True, dropout = 0.5)(X)
X = LSTM(128, return_sequences=False)(X)

Если у вас все еще есть проблемы, проблема должна быть связана с вашей формой ввода.

...