Cacifer Char LSTM Storyteller

A character-level LSTM trained on my Cacifer stories (monastery, Cacifer the cat, Romé, Dania, Deonardo, etc.).
It continues text one character at a time and produces Cacifer-style lines like:

“If the fore of the cobled the stell of her breath…”

  • Framework: Keras / TensorFlow
  • Context length: 60 characters
  • Vocabulary: characters in char_to_idx.json

Files

  • cacifer_char_lstm_storyteller.keras – Keras model file
  • char_to_idx.json – character → index
  • idx_to_char.json – index → character

Usage

import json, numpy as np
from tensorflow.keras.models import load_model

model = load_model("cacifer_char_lstm_storyteller.keras", compile=False)
char_to_idx = json.load(open("char_to_idx.json"))
idx_to_char = {int(k): v for k, v in json.load(open("idx_to_char.json")).items()}
seq_len = 60

def sample_char(probs, temperature=0.7):
    probs = np.asarray(probs, dtype="float64")
    if temperature != 1.0:
        logits = np.log(probs + 1e-8) / temperature
        probs = np.exp(logits)
    probs /= probs.sum()
    probs = np.clip(probs, 1e-12, 1.0)
    probs /= probs.sum()
    return np.random.choice(len(probs), p=probs)

def generate(seed, length=400, temperature=0.7):
    x = seed[-seq_len:]
    for _ in range(length):
        x_idx = np.array([[char_to_idx.get(c, 0) for c in x]])
        preds = model.predict(x_idx, verbose=0)[0]
        x += idx_to_char[sample_char(preds, temperature)]
    return x

seed = "I am Cacifer, a cat, listening to the bells and the breathing of the guests."
print(generate(seed, length=400, temperature=0.6))
Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support