Machine Translation với Keras
Thushan Ganegedara
Data Scientist and Author



Nhận vào
Trả ra
Đệ quy đưa từ dự đoán và trạng thái về làm đầu vào



sos đánh dấu bắt đầu bản dịch (ví dụ: câu tiếng Pháp).
sos làm từ đầu vào bộ giải mã và tiếp tục dự đoáneos đánh dấu kết thúc bản dịch.
eosĐặt độ dài dự đoán tối đa để an toàn
Import layers và Model
# Import Keras layers
import tensorflow.keras.layers as layers
from tensorflow.keras.models import Model
Định nghĩa các lớp của mô hình
en_inputs = layers.Input(shape=(en_len,en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
en_out, en_state = en_gru(en_inputs)
Tạo đối tượng Model
encoder = Model(inputs=en_inputs, outputs=en_state)
Input của bộ giải mãde_inputs = layers.Input(shape=(1, fr_vocab))
de_state_in = layers.Input(shape=(hsize,))
layers trung gian của bộ giải mãde_gru = layers.GRU(hsize, return_state=True) de_out, de_state_out = de_gru(de_inputs, initial_state=de_state_in)de_dense = layers.Dense(fr_vocab, activation='softmax') de_pred = de_dense(de_out)
Model cho bộ giải mãdecoder = Model(inputs=[de_inputs, de_state_in], outputs=[de_pred, de_state_out])
l1w = l1.get_weights()l2 bằng wl2.set_weights(w)GRU, Decoder GRU và Decoder Denseen_gru_w = tr_en_gru.get_weights()
en_gru.set_weights(en_gru_w)
Cũng có thể viết:
en_gru.set_weights(tr_en_gru.get_weights())
en_sent = ['the united states is sometimes chilly during
december , but it is sometimes freezing in june .']
en_seq = sents2seqs('source', en_st, onehot=True, reverse=True)
de_s_t = encoder.predict(en_seq)
de_seq = word2onehot(fr_tok, 'sos', fr_vocab)
fr_sent = ''for _ in range(fr_len): de_prob, de_s_t = decoder.predict([de_seq,de_s_t])de_w = probs2word(de_prob, fr_tok)de_seq = word2onehot(fr_tok, de_w, fr_vocab)if de_w == 'eos': break fr_sent += de_w + ' '
Machine Translation với Keras