text-generation / app.py
Jezia's picture
Update app.py
9d39817
raw
history blame contribute delete
No virus
2.53 kB
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
import gradio as gr
from gradio import mix
import numpy as np
import torch
from keras.utils.data_utils import pad_sequences
from huggingface_hub import from_pretrained_keras
model = from_pretrained_keras("keras-io/text-generation-miniature-gpt")
a = []
word_to_index = {}
a_file = open("imdb.vocab") # get vocab tokens
for line in a_file:
a.append(line.strip())
print(len(a))
for index, word in enumerate(a):
word_to_index[index] = word
tokenizer = Tokenizer(num_words=80, split=' ')
tokenizer.fit_on_texts(word_to_index.values()) # fit tokenizer on vocab tokens
def text_process_pipeline(start_prompt): #pipeline
processed_text = tokenizer.texts_to_sequences(start_prompt)
processed_text = pad_sequences(processed_text, maxlen=80, padding='post')
return processed_text
def sample_from(logits):
l, i = tf.math.top_k(logits, k=10, sorted=True)
indices = np.asarray(i).astype("int32")
preds = keras.activations.softmax(tf.expand_dims(l, 0))[0]
preds = np.asarray(preds).astype("float32")
return np.random.choice(i, p=preds)
def generate_answers(text):
num_tokens_generated = 0
sample_index = len([text]) - 1
tokens_generated= []
text_out = text_process_pipeline([text])
predictions,_ = model.predict(text_out)
results = np.argmax(predictions, axis=1)[0]
while num_tokens_generated <= 40:
sample_token = sample_from(predictions[0][sample_index])
tokens_generated.append(sample_token)
num_tokens_generated = len(tokens_generated)
text_out = tokenizer.sequences_to_texts([tokens_generated])
return text_out[0]
examples = [["I was fortunate to attend the London premier of this film. While I am not at all a fan of British drama, I did find myself deeply moved by the characters and the BAD CHOICES they made. I was in tears by the end of the film. Every scene was mesmerizing. The attention to detail and the excellent acting was quite impressive."],["The movie was nice, "], ["It was showing nothing special to "]]
title = "Text Generation with Miniature GPT"
description = "Gradio Demo for a miniature with GPT. To use it, simply add your text, or click one of the examples to load them. Read more at the links below."
iface = gr.Interface(fn=generate_answers, title = title, description=description, inputs=['text'], outputs=["text"], examples=examples)
iface.launch(debug=True)