CoolFace
Datasetpublic

ysn-rfd/text-dataset-tiny-code-script-py-format

USED of tahamajs/medicine_ds_persian for .parquet file USED of Alijafarixcs2/persian-it-llama2-2k for .parquet file USED of Abirate/english_quotes for .jsonl file NEW FILES (05/12/2025) NEW FILES (12/26/2025) NEW FILES (02/15/2026)

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
3likes1.6kdownloads
chat_t4_test.py74 linesDownload Raw Back to pytorch_fine_tuning_code
1import torch
2import torch.nn as nn
3
4# Configuration
5MODEL_SAVE_PATH = "char_lm_model.pth"
6SEQ_LENGTH = 32
7EMBEDDING_DIM = 64
8HIDDEN_DIM = 64
9
10# Load vocabulary
11with open('dataset.txt', 'r', encoding='utf-8') as f:
12    text = f.read()
13
14chars = sorted(list(set(text)))
15vocab_size = len(chars)
16char_to_idx = {ch: i for i, ch in enumerate(chars)}
17idx_to_char = {i: ch for i, ch in enumerate(chars)}
18
19# Model architecture
20class CharLM(nn.Module):
21    def __init__(self):
22        super(CharLM, self).__init__()
23        self.embedding = nn.Embedding(vocab_size, EMBEDDING_DIM)
24        self.rnn = nn.GRU(EMBEDDING_DIM, HIDDEN_DIM, batch_first=True)
25        self.fc = nn.Linear(HIDDEN_DIM, vocab_size)
26        
27    def forward(self, x, hidden=None):
28        x = self.embedding(x)
29        out, hidden = self.rnn(x, hidden)
30        out = self.fc(out)
31        return out, hidden
32
33# Load the trained model
34model = CharLM()
35model.load_state_dict(torch.load(MODEL_SAVE_PATH))
36model.eval()
37
38def generate_text(model, start_str, length=100, temperature=0.7, top_k=0):
39    """
40    Generate text with temperature scaling and top-k sampling
41    """
42    model.eval()
43    chars = [ch for ch in start_str]
44    input_seq = torch.tensor([char_to_idx[ch] for ch in chars]).unsqueeze(0)
45    hidden = None
46    
47    with torch.no_grad():
48        for _ in range(length):
49            outputs, hidden = model(input_seq, hidden)
50            logits = outputs[0, -1] / temperature
51            
52            if top_k > 0:
53                top_vals, top_idx = torch.topk(logits, top_k)
54                logits[logits < top_vals[-1]] = -float('Inf')
55            
56            probs = torch.softmax(logits, dim=-1)
57            next_char = torch.multinomial(probs, num_samples=1).item()
58            chars.append(idx_to_char[next_char])
59            input_seq = torch.tensor([[next_char]])
60    
61    return ''.join(chars)
62
63# Chat loop
64def chat():
65    print("Chat with the model! Type 'exit' to stop.")
66    while True:
67        user_input = input("You: ")
68        if user_input.lower() == 'exit':
69            break
70        response = generate_text(model, user_input, length=100, temperature=0.7, top_k=5)
71        print("Bot:", response)
72
73chat()
74