--- language: en tags: - shakespeare - gpt2 - text-generation - english license: mit datasets: - shakespeare --- # Shakespeare GPT-2 A GPT-2 model fine-tuned on Shakespeare's complete works to generate Shakespeare-style text. ## Model Description This model is a fine-tuned version of GPT-2 (124M parameters) trained on Shakespeare's complete works. It can generate text in Shakespeare's distinctive style, including dialogue, soliloquies, and dramatic prose. ### Model Architecture - Base Model: GPT-2 (124M parameters) - Layers: 12 - Heads: 12 - Embedding Dimension: 768 - Context Length: 1024 tokens - Total Parameters: ~124M ### Training Details - Dataset: Complete works of Shakespeare - Training Steps: 100,000 - Batch Size: 4 - Sequence Length: 32 - Learning Rate: 3e-4 - Optimizer: AdamW - Device: MPS/CUDA/CPU ## Intended Use This model is intended for: - Generating Shakespeare-style text - Creative writing assistance - Educational purposes in literature - Entertainment and artistic projects ## Limitations - May generate text that mimics but doesn't perfectly replicate Shakespeare's style - Limited by training data to Shakespeare's vocabulary and themes - Can produce anachronistic or inconsistent content - Maximum context length of 1024 tokens ## Training Data The model was trained on Shakespeare's complete works, including: - All plays (comedies, tragedies, histories) - Sonnets and poems - Total training tokens: [Insert number of tokens] ## Performance The model achieves: - Training Loss: [Insert final training loss] - Best Loss: [Insert best loss achieved] ## Example Usage python from transformers import GPT2LMHeadModel, GPT2Tokenizer Load model and tokenizer model_name = "your-username/shakespeare-gpt" tokenizer = GPT2Tokenizer.from_pretrained(model_name) model = GPT2LMHeadModel.from_pretrained(model_name) Generate text prompt = "To be, or not to be," input_ids = tokenizer.encode(prompt, return_tensors='pt') output = model.generate( input_ids, max_length=500, temperature=0.8, top_k=40, do_sample=True ) generated_text = tokenizer.decode(output[0], skip_special_tokens=True) print(generated_text) ## Sample Outputs Prompt: "To be, or not to be," Output: [Insert sample generation] Prompt: "Friends, Romans, countrymen," Output: [Insert sample generation]