Last active
February 11, 2023 16:29
-
-
Save tommytracey/71b2848b8fb420b71119e672d6457e9d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def model_final (input_shape, output_sequence_length, english_vocab_size, french_vocab_size): | |
""" | |
Build and train a model that incorporates embedding, encoder-decoder, and bidirectional RNN | |
:param input_shape: Tuple of input shape | |
:param output_sequence_length: Length of output sequence | |
:param english_vocab_size: Number of unique English words in the dataset | |
:param french_vocab_size: Number of unique French words in the dataset | |
:return: Keras model built, but not trained | |
""" | |
# Hyperparameters | |
learning_rate = 0.003 | |
# Build the layers | |
model = Sequential() | |
# Embedding | |
model.add(Embedding(english_vocab_size, 128, input_length=input_shape[1], | |
input_shape=input_shape[1:])) | |
# Encoder | |
model.add(Bidirectional(GRU(128))) | |
model.add(RepeatVector(output_sequence_length)) | |
# Decoder | |
model.add(Bidirectional(GRU(128, return_sequences=True))) | |
model.add(TimeDistributed(Dense(512, activation='relu'))) | |
model.add(Dropout(0.5)) | |
model.add(TimeDistributed(Dense(french_vocab_size, activation='softmax'))) | |
model.compile(loss=sparse_categorical_crossentropy, | |
optimizer=Adam(learning_rate), | |
metrics=['accuracy']) | |
return model |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment