Я использую fit_generator
для обучения модели перевода. Код генератора добавлен ниже.
класс My_Generator (последовательность):
def __init__(self, X_data, Y_data, batch_size):
self.X_data, self.Y_data = X_data, Y_data
#print(X_data)
self.batch_size = batch_size
def __len__(self):
print(int(ceil(len(self.X_data) / float(self.batch_size))))
return int(ceil(len(self.X_data) / float(self.batch_size)))
def __getitem__(self, idx):
#print('hey')
batch_x = self.X_data[idx * self.batch_size:(idx + 1) * self.batch_size]
batch_y = self.Y_data[idx * self.batch_size:(idx + 1) * self.batch_size]
hindi_data= encode_sequences(hin_tokenizer,batch_x,hin_max_len_sent)
eng_data = encode_sequences(eng_tokenizer,batch_y,eng_max_len_sent)
output = encode_output(eng_data,eng_vocab_size)
return array(hindi_data),array(output)
Я тренировался в течение 30 эпох, которые дали val_loss: 0.5665
и val_acc: 0.9268
.
Код прогноза:
def predict_sequence(model, tokenizer, source):
prediction = model.predict(source, verbose=0)[0]
integers = [argmax(vector) for vector in prediction]
target = list()
for i in integers:
word = word_for_id(i, tokenizer)
print('target ' ,word)
if word is None:
break
target.append(word)
return ' '.join(target)
Сохраненная модель не дает правильных прогнозов для целевого языка. Я получаю блю 0. Я также пытался использовать predict_generator
. Но это тоже не похоже на работу. Любая помощь по этому вопросу приветствуется.