Update1:
Код, на который я ссылаюсь, - это именно тот код в книге, который вы можете найти здесь .
Единственное, что я не хочу иметь embed_size
в части декодера. Вот почему я думаю, что мне вообще не нужен слой для встраивания, потому что если я добавлю слой для встраивания, мне нужно иметь embed_size
в части декодера (пожалуйста, исправьте меня, если я ошибаюсь).
В целом, я пытаюсь принять тот же код без использования слоя встраивания, потому что мне нужно иметь vocab_size
в части декодера.
Я думаю, что предложение, приведенное в комментарии, может быть правильным (using one_hot_encoding
), как только я столкнулся с этой ошибкой:
Когда я это сделал one_hot_encoding
:
tf.keras.backend.one_hot(indices=sent_wids, classes=vocab_size)
Я получил эту ошибку:
in check_num_samples
you should specify the + steps_name + argument
ValueError: If your data is in the form of symbolic tensors, you should specify the steps_per_epoch argument (instead of the batch_size argument, because symbolic tensors are expected to produce batches of input data)
То, как я подготовил данные, выглядит следующим образом:
форма sent_lens
равна (87716, 200)
, и я хочу изменить ее так, чтобы я мог передать ее в LSTM.
здесь 200
обозначает sequence_lenght
, а 87716
- количество образцов, которые у меня есть.
ниже код для LSTM Autoencoder
:
inputs = Input(shape=(SEQUENCE_LEN,VOCAB_SIZE), name="input")
encoded = Bidirectional(LSTM(LATENT_SIZE), merge_mode="sum", name="encoder_lstm")(inputs)
decoded = RepeatVector(SEQUENCE_LEN, name="repeater")(encoded)
decoded = LSTM(VOCAB_SIZE, return_sequences=True)(decoded)
autoencoder = Model(inputs, decoded)
autoencoder.compile(optimizer="sgd", loss='mse')
autoencoder.summary()
history = autoencoder.fit(Xtrain, Xtrain,batch_size=BATCH_SIZE,
epochs=NUM_EPOCHS)
Нужно ли мне что-то делать дополнительно, если нет, почему я не могу получить это работает?
Пожалуйста, дайте мне знать, какая часть не ясна, я объясню.
Спасибо за вашу помощь:)