|
from transformers import T5Tokenizer, TFT5ForConditionalGeneration, AutoTokenizer, TFAutoModelForSeq2SeqLM
|
|
import tensorflow as tf
|
|
|
|
|
|
model1 = TFT5ForConditionalGeneration.from_pretrained('models\\counsel_model\\saved_model')
|
|
tokenizer1 = T5Tokenizer.from_pretrained('models\\counsel_model\\tokenizer')
|
|
|
|
model2 = TFAutoModelForSeq2SeqLM.from_pretrained('models\\greeting_model\\saved_model')
|
|
tokenizer2 = AutoTokenizer.from_pretrained('models\\greeting_model\\saved_model')
|
|
|
|
def ensemble_generate(question):
|
|
|
|
input_text1 = f"question: {question}"
|
|
encoding1 = tokenizer1(
|
|
input_text1,
|
|
max_length=500,
|
|
padding='max_length',
|
|
truncation=True,
|
|
return_tensors='tf'
|
|
)
|
|
|
|
input_ids1 = encoding1['input_ids']
|
|
attention_mask1 = encoding1['attention_mask']
|
|
|
|
|
|
outputs1 = model1.generate(
|
|
input_ids=input_ids1,
|
|
attention_mask=attention_mask1,
|
|
max_length=512,
|
|
num_beams=5,
|
|
early_stopping=True,
|
|
no_repeat_ngram_size=2,
|
|
return_dict_in_generate=True,
|
|
output_scores=True
|
|
)
|
|
|
|
generated_text1 = tokenizer1.decode(outputs1.sequences[0], skip_special_tokens=True)
|
|
|
|
|
|
input_ids2 = tokenizer2.encode(question, return_tensors='tf')
|
|
|
|
|
|
outputs2 = model2.generate(input_ids2, max_length=500, num_beams=4, early_stopping=True)
|
|
generated_text2 = tokenizer2.decode(outputs2[0], skip_special_tokens=True)
|
|
|
|
|
|
final_response = f"Model 1 Response: {generated_text1}\nModel 2 Response: {generated_text2}"
|
|
|
|
return final_response
|
|
|
|
|
|
test_questions = [
|
|
'What does it mean to have a mental illness?',
|
|
'What are some of the warning signs of mental illness?',
|
|
'What is the Information Technology syllabus?',
|
|
'How are you? How is your day?',
|
|
'Is anyone there?',
|
|
]
|
|
|
|
for question in test_questions:
|
|
print(f"Question: {question}")
|
|
print(f"Ensembled Answer: {ensemble_generate(question)}\n")
|
|
|