Skip to main content
tensorlm
========

Generate Shakespeare poems with 4 lines of code.

<a href="http://www.mlowl.com/post/character-language-model-lstm-tensorflow/" target="_blank">[![showcase
of the package]]</a>

Installation
------------

`tensorlm` is written in / for Python 3.

pip3 install tensorflow>=1.1
pip3 install tensorlm

Basic Usage
-----------

Use the `CharLM` or `WordLM` class:

``` {.python}
import tensorflow as tf
from tensorlm import CharLM

with tf.Session() as session:

# Create a new model. You can also use WordLM
model = CharLM(session, "datasets/sherlock/train.txt", max_vocab_size=96,
neurons_per_layer=100, num_layers=3, num_timesteps=15)

# Train it
model.train(session, max_epochs=5, max_steps=500, print_logs=True)

# Let it generate a text
generated = model.sample(session, "The ", num_steps=100)
print("The " + generated)
```

This should output something like:

The eee ee ee ee e e ee ee e e e e e e e e e e

Command Line Usage
------------------

**Train:**\
`python3 -m tensorlm.cli --train=True --level=char --train_text_path=datasets/sherlock/train.txt --max_vocab_size=96 --neurons_per_layer=100 --num_layers=3 --batch_size=10 --num_timesteps=160 --save_dir=out/model --max_epochs=300 --save_interval_hours=0.5`

**Sample:**\
`python3 -m tensorlm.cli --sample=True --level=char --neurons_per_layer=400 --num_layers=3 --num_timesteps=160 --save_dir=out/model`

**Evaluate:**\
`python3 -m tensorlm.cli --evaluate=True --level=char --evaluate_text_path=datasets/sherlock/valid.txt --neurons_per_layer=400 --num_layers=3 --batch_size=10 --num_timesteps=160 --save_dir=out/model`

See `python3 -m tensorlm.cli --help` for all options.

Advanced Usage
--------------

### Custom Input Data

The inputs and targets don’t have to be text. `GeneratingLSTM` only
expects token ids, so you can use any data type for the sequences, as
long as you can encode the data to integer ids.

``` {.python}
# We use integer ids from 0 to 19, so the vocab size is 20. The range of ids must always start
# at zero.
batch_inputs = np.array([[1, 2, 3, 4], [15, 16, 17, 18]]) # 2 batches, 4 time steps each
batch_targets = np.array([[2, 3, 4, 5], [16, 17, 18, 19]])

# Create the model in a TensorFlow graph
model = GeneratingLSTM(vocab_size=20, neurons_per_layer=10, num_layers=2, max_batch_size=2)

# Initialize all defined TF Variables
session.run(tf.global_variables_initializer())

for _ in range(5000):
model.train_step(session, batch_inputs, batch_targets)

sampled = model.sample_ids(session, [15], num_steps=3)
print("Sampled: " + str(sampled))
```

This should output something like:

Sampled: [16, 18, 19]

### Custom Training, Dropout etc.

Use the `GeneratingLSTM` class directly. This class is agnostic to the
dataset type. It expects integer ids and returns integer ids.

\`\`\`python\
import tensorflow

[showcase of the package]: http://i.cubeupload.com/8Cm5RQ.gif
[![showcase of the package]]: http://www.mlowl.com/post/character-language-model-lstm-tensorflow/

Metadata

Release files for tensorlm 0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tensorlm 0.3
File Size Uploaded
tensorlm-0.3.tar.gz 21.8 kB Details

Release files / tensorlm-0.3.tar.gz

Download URL tensorlm-0.3.tar.gz
Size 21.8 kB
Tags Source
SHA-256 checksum
How to use checksums
fe5ba4d28f3021a7223a3d5c22ebf4687ef84e7c820895ac5373212ff9366d17
BLAKE2b-256 checksum
How to use checksums
401029ad0fa9f0fde4a287aaf01f6defc6755ccfffa319ab20c33a04bd9c6ab8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

0.4.2

1 release file

0.4.1

1 release file

0.4

1 release file

This release

0.3 This release

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page