-[Preprocessing the Dataset](#preprocessing-the-dataset)
-[Preprocessing the Dataset](#preprocessing-the-dataset)
-[Defining the Network](#defining-the-network)
-[Defining the Network](#defining-the-network)
-[Pre-Traning](#pre-training)
-[Defining the Optimizer and Loss Function](#defining-the-optimizer-and-loss-function)
-[Defining the Optimizer and Loss Function](#defining-the-optimizer-and-loss-function)
-[Training and Saving the Model](#training-and-saving-the-model)
-[Training and Saving the Model](#training-and-saving-the-model)
-[Validating the Model](#validating-the-model)
-[Validating the Model](#validating-the-model)
...
@@ -85,38 +86,31 @@ Currently, MindSpore GPU and CPU supports SentimentNet network based on the long
...
@@ -85,38 +86,31 @@ Currently, MindSpore GPU and CPU supports SentimentNet network based on the long
Long short-term memory (LSTM) is an artificial recurrent neural network (RNN) architecture used for processing and predicting an important event with a long interval and delay in a time sequence. For details, refer to online documentation.
Long short-term memory (LSTM) is an artificial recurrent neural network (RNN) architecture used for processing and predicting an important event with a long interval and delay in a time sequence. For details, refer to online documentation.
3. After the model is obtained, use the validation dataset to check the accuracy of model.
3. After the model is obtained, use the validation dataset to check the accuracy of model.
> The current sample is for the Ascend 910 AI processor. You can find the complete executable sample code at:<https://gitee.com/mindspore/docs/tree/master/tutorials/tutorial_code/lstm>
> The current sample is for the Ascend 910 AI processor. You can find the complete executable sample code at:<https://gitee.com/mindspore/mindspore/blob/master/model_zoo/lstm>
> - `main.py`: code file, including code for data preprocessing, network definition, and model training.
> - `src/config.py`:some configurations on the network, including the batch size and number of training epochs.
> - `config.py`: some configurations on the network, including the `batch size` and number of training epochs.
> - `src/dataset.py`:dataset related definition,include MindRecord file convert and data-preprocess, etc.
> - `src/imdb.py`: the util class for parsing IMDB dataset.
> - `src/lstm.py`: the definition of semantic net.
> - `train.py`: the training script.
> - `eval.py`: the evaluation script.
## Implementation
## Implementation
### Importing Library Files
### Importing Library Files
The following are the required public modules and MindSpore modules and library files.
The following are the required public modules and MindSpore modules and library files.
help='the target device to run, support "GPU", "CPU". Default: "GPU".')
help='the target device to run, support "GPU", "CPU". Default: "GPU".')
args=parser.parse_args()
args=parser.parse_args()
...
@@ -159,285 +147,44 @@ import gensim
...
@@ -159,285 +147,44 @@ import gensim
### Preprocessing the Dataset
### Preprocessing the Dataset
1. Process the text dataset, including encoding, word segmentation, alignment, and processing the original GloVe data to adapt to the network structure.
Convert the dataset format to the MindRecord format for MindSpore to read.
> After convert success, we can file `mindrecord` files under the directory `preprocess_path`. Usually, this operation does not need to be performed every time while the data set is unchanged.
>1. Process the text dataset, including encoding, word segmentation, alignment, and processing the original GloVe data to adapt to the network structure.
>2. Convert the dataset format to the MindRecord format.
As shown in the following output, the loss value decreases gradually with the training process and reaches about 0.249. That is, after 10 epochs of training, the accuracy of the current text analysis result is about 85%.
As shown in the following output, the loss value decreases gradually with the training process and reaches about 0.2855.
```shell
```shell
============== Starting Data Pre-processing ==============
============== Starting Data Pre-processing ==============
vocab_size: 252192
vocab_size: 252192
============== Starting Training ==============
============== Starting Training ==============
[INFO] ME(15831:140036161672960,MainProcess):2020-03-09-16:29:02.785.484 [mindspore/train/serialization.py:118] Execute save checkpoint process.
[INFO] ME(29963:140462460516096,MainProcess):2020-03-09-16:37:20.434.749 [mindspore/train/serialization.py:200] Load checkpoint process finish.
[INFO] ME(29963:140462460516096,MainProcess):2020-03-09-16:37:20.467.336 [mindspore/train/serialization.py:233] Execute parameter into net process.
[INFO] ME(29963:140462460516096,MainProcess):2020-03-09-16:37:20.467.649 [mindspore/train/serialization.py:268] Load parameter into net process finish.
[INFO] ME(29963:140462460516096,MainProcess):2020-03-09-16:37:20.434.749 [mindspore/train/serialization.py:200] Load checkpoint process finish.
[INFO] ME(29963:140462460516096,MainProcess):2020-03-09-16:37:20.467.336 [mindspore/train/serialization.py:233] Execute parameter into net process.
[INFO] ME(29963:140462460516096,MainProcess):2020-03-09-16:37:20.467.649 [mindspore/train/serialization.py:268] Load parameter into net process finish.