# Running the Word-RNN Model

Overview

The example C++ application in this tutorial is called
[snpe-net-run](https://docs.qualcomm.com/doc/80-63442-10/topic/SNPE_general_tools.html#snpe-net-run). It is a command line executable that executes
a neural network using Qualcomm® Neural Processing SDK APIs.

The required arguments to snpe-net-run are:

- A neural network model in the DLC file format
- An input list file with paths to the input data.

Optional arguments to snpe-net-run are:

- Choice of GPU or DSP runtime (default is CPU)
- Output directory (default is ./output)
- Show help description

snpe-net-run creates and populates an output directory with the
results of executing the neural network on the input data.

![../images/neural_network.png](data:image/png;base64,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)

The Qualcomm® Neural Processing SDK provides Linux and Android binaries of
**snpe-net-run** under

- $SNPE\_ROOT/bin/x86\_64-linux-clang
- $SNPE\_ROOT/bin/aarch64-android
- $SNPE\_ROOT/bin/aarch64-oe-linux-gcc8.2
- $SNPE\_ROOT/bin/aarch64-oe-linux-gcc9.3

Introduction

Recurrent Neural Network (RNN) architectures are widely used in
Machine Learning Applications for processing sequential input
data. This chapter will show a simple Word-RNN example for
predicting the next word in an embedding using Long Short-Term
Memory (LSTM). The step-by-step example will create, train,
convert, and execute a Word-RNN model with Qualcomm® Neural Processing SDK.

The external python3 packages needed by this example are:

- numpy
- pandas
- sklearn
- tensorflow (1.6 or 1.11)

There are six files in $SNPE\_ROOT/examples/Models/word\_rnn folder

- inference.py
- input\_list.txt
- belling\_the\_cat.txt
- word\_rnn.py
- word\_rnn\_adb.sh
- NOTICE.txt

The **word\_rnn.py** python3 script creates and trains an RNN
model with one LSTM layer. After RNN training is done, the
corresponding frozen protobuf file will be generated.

The **inference.py** prompts the user to enter several words,
at which point **snpe-net-run** will be called in a loop to
generate subsequent words.

Prerequisites

- The Qualcomm® Neural Processing SDK has been set up following the [Qualcomm (R) Neural Processing SDK
Setup](https://docs.qualcomm.com/doc/80-63442-10/topic/SNPE_general_setup.html) chapter.
- The [Tutorials Setup](https://docs.qualcomm.com/doc/80-63442-10/topic/tutorial_setup.html) has been
completed.
- TensorFlow is installed (see [TensorFlow
Setup](https://docs.qualcomm.com/doc/80-63442-10/topic/SNPE_general_setup.html#tensorflow-setup))

Create, Train, and Convert Word-RNN Model

Run word\_rnn.py to create and train the Word-RNN model.

cd $SNPE_ROOT/examples/Models/word_rnn
    python3 word_rnn.py
    Copy to clipboard

The terminal will show the following messages.

Training will be logged in word_rnn_log.
    Load training file belling_the_cat.txt.
    Embedding created.
    Iter= 1000
    Iter= 2000
    Iter= 3000
    Iter= 4000
    Iter= 5000
    Optimization done.
    Converted 2 variables to const ops.
    Save frozen graph in word_rnn.pb.
    Copy to clipboard

Then, convert the frozen graph model with
snpe-tensorflow-to-dlc.

snpe-tensorflow-to-dlc --input_network word_rnn.pb \
                           --input_dim Placeholder "1, 4, 1" \
                           --out_node "rnn/lstm_cell/mul_11" \
                           --output_path word_rnn.dlc
    Copy to clipboard

After dlc conversion, we can view the converted dlc
architecture with **snpe-dlc-info** and **snpe-dlc-viewer** as
follows:

snpe-dlc-info -i word_rnn.dlc
    snpe-dlc-viewer -i word_rnn.dlc
    Copy to clipboard

Run on Linux Host

Go to the base location for the model and run the python3
script including **snpe-net-run**

python3 inference.py
    Copy to clipboard

After running **inference.py**, you will see a list of word
embedding keys and user input prompt as follows:

Load training file belling_the_cat.txt.
    Embedding created.
    Use host cpu.
    Display word embedding keys:
    dict_keys(['long', 'is', 'up', 'it', 'i', 'chief', 'our', 'procured', 'her', 'in', 'mouse', 'council', 'treacherous', 'meet', 'manner', 'approaches', 'with', 'propose', 'which', 'consider', 'thought', 'know', 'bell', 'signal', 'always', 'by', 'small', 'old', 'could', 'about', 'neck', 'of', 'approach', 'well', 'easy', 'take', 'all', 'outwit', 'met', 'they', 'this', 'who', 'cat', 'what', '.', 'will', 'attached', 'their', 'when', 'receive', 'agree', 'applause', 'and', 'if', 'now', 'to', 'a', 'round', 'enemy', 'was', 'ribbon', 'us', 'had', 'general', 'ago', 'means', 'last', 'venture', 'got', 'sly', 'measures', 'young', 'she', 'very', 'impossible', 'therefore', 'we', 'should', 'one', 'mice', 'case', '?', 'make', 'nobody', 'he', 'that', 'consists', 'spoke', 'from', 'easily', 'at', 'neighbourhood', 'the', 'looked', 'then', 'until', 'an', 'common', 'but', 'be', 'would', 'danger', 'retire', 'proposal', 'another', 'you', ',', 'while', 'escape', 'some', 'remedies', 'said'])
    Please input 4 words:
    Copy to clipboard

User can input embedded words and see the results. For example:
**long ago , the**

...
    ...
    -------------------------------------------------------------------------------
    Model String: N/A
    SNPE vX.Y.Z.dev
    -------------------------------------------------------------------------------
    Processing DNN input(s):
    ./input.raw
    -------------------------------------------------------------------------------
    Model String: N/A
    SNPE vX.Y.Z.dev
    -------------------------------------------------------------------------------
    Processing DNN input(s):
    ./input.raw
    Inference result: long ago , the said she a , , and the could could , , and the could could , , and the could could , , and the could could , , and the could
    Copy to clipboard

The **inference.py** will call **snpe-net-run** several times
to generate subsequent words with trained LSTM model.

**Binary data input**

Note that the Word-RNN model does not accept pure text files as
input. The model expects its input tensor dimension to be
**1x4x1** as a float array. The **create\_embedding** function
in **inference.py** will parse, collect, encode, and build the
word embedding. User inputs will then be transformed into a **1x4x1** vector
and sent into the LSTM model. Afterwards the LSTM output will
be also transformed into the corresponding embedded word.

Run on Target Platform ( Android/LE/UBUN )

**Select target architecture**

Qualcomm® Neural Processing SDK provides binaries for different target platforms.
Android binaries are  compiled with clang using libc++ STL implementation.
Below are examples for aarch64-android (Android platform)  and
aarch64-oe-linux-gcc11.2 toolchain (LE platform).
Similarly other toolchains for different platforms can be set as SNPE\_TARGET\_ARCH

# For Android targets: architecture: arm64-v8a - compiler: clang - STL: libc++
    export SNPE_TARGET_ARCH=aarch64-android
    
    # Example for LE targets
    export SNPE_TARGET_ARCH=aarch64-oe-linux-gcc11.2
    Copy to clipboard

For simplicity, this tutorial sets the target binaries to
aarch64-android.

**Push libraries and binaries to target**

Push Qualcomm® Neural Processing SDK libraries and the prebuilt snpe-net-run executable to
/data/local/tmp/snpeexample on the Android target. Set SNPE\_TARGET\_DSPARCH
to the DSP architecture of the target Android device.

export SNPE_TARGET_ARCH=aarch64-android
    export SNPE_TARGET_DSPARCH=hexagon-v73
    
    adb -s $DEVICE_ID shell "mkdir -p /data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/bin"
    adb -s $DEVICE_ID shell "mkdir -p /data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/lib"
    adb -s $DEVICE_ID shell "mkdir -p /data/local/tmp/snpeexample/dsp/lib"
    
    adb -s $DEVICE_ID push $SNPE_ROOT/lib/$SNPE_TARGET_ARCH/*.so \
          /data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/lib
    adb -s $DEVICE_ID push $SNPE_ROOT/lib/$SNPE_TARGET_DSPARCH/unsigned/*.so \
          /data/local/tmp/snpeexample/dsp/lib
    adb -s $DEVICE_ID push $SNPE_ROOT/bin/$SNPE_TARGET_ARCH/snpe-net-run \
          /data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/bin
    Copy to clipboard

**Set up enviroment variables**

Set up the library path, the path variable, and the target
architecture in adb shell to run the executable with the -h
argument to see its description.

adb -s $DEVICE_ID shell
    export SNPE_TARGET_ARCH=aarch64-android
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/lib
    export PATH=$PATH:/data/local/tmp/snpeexample/$SNPE_TARGET_ARCH/bin
    snpe-net-run -h
    exit
    Copy to clipboard

**Push model data to Android target**

To execute the Word-RNN model on your Android target follow these steps:

adb -s $DEVICE_ID shell "mkdir -p /data/local/tmp/word_rnn"
    adb -s $DEVICE_ID push input_list.txt /data/local/tmp/word_rnn
    adb -s $DEVICE_ID push input.raw /data/local/tmp/word_rnn
    adb -s $DEVICE_ID push word_rnn.dlc /data/local/tmp/word_rnn
    adb -s $DEVICE_ID push word_rnn_adb.sh /data/local/tmp/word_rnn
    Copy to clipboard

**Note:** It may take some time to push the word\_rnn dlc file to your target.

Running on Android using CPU Runtime

Run the Android C++ executable with the following commands:

cd /data/local/tmp/word_rnn
    snpe-net-run --container word_rnn.dlc --input_list input_list.txt
    Copy to clipboard

We will get the same result as when we [Run on Linux
Host](https://docs.qualcomm.com/doc/80-63442-10/topic/tutorial_word_rnn.html#run-on-linux-host).

Last Published: Jun 04, 2026

[Previous Topic
Running the Inception v3 Model in Windows](https://docs.qualcomm.com/bundle/publicresource/80-63442-10/topics/tutorial_inceptionv3_win.md) [Next Topic
Running the Spoken Digit Recognition Model](https://docs.qualcomm.com/bundle/publicresource/80-63442-10/topics/tutorial_spoken_digit.md)