diff --git a/open-machine-learning-jupyter-book/_toc.yml b/open-machine-learning-jupyter-book/_toc.yml index 51d889a64..d00995ef7 100644 --- a/open-machine-learning-jupyter-book/_toc.yml +++ b/open-machine-learning-jupyter-book/_toc.yml @@ -100,8 +100,10 @@ parts: sections: - file: deep-learning/cnn/cnn-vgg - file: deep-learning/cnn/cnn-deepdream - - file: deep-learning/rnn.ipynb - - file: deep-learning/lstm.ipynb + - file: deep-learning/rnn/rnn + sections: + - file: deep-learning/rnn/lstm + - file: deep-learning/rnn/bi-rnn - file: deep-learning/time-series.ipynb - file: deep-learning/autoencoder.ipynb - file: deep-learning/object-detection.ipynb diff --git a/open-machine-learning-jupyter-book/deep-learning/rnn/bi-rnn.ipynb b/open-machine-learning-jupyter-book/deep-learning/rnn/bi-rnn.ipynb new file mode 100644 index 000000000..bdbf0d594 --- /dev/null +++ b/open-machine-learning-jupyter-book/deep-learning/rnn/bi-rnn.ipynb @@ -0,0 +1,222 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Bidirectional RNN\n", + "\n", + "We already know about LSTM in RNN, how can we further optimize a model like RNN? That's using Bidirectional RNN.\n", + "\n", + "In 1997, Mike Schuster proposed the Bidirectional RNN model. These two models greatly improve the early RNN structure, broaden the application range of RNN, and lay a foundation for the development of subsequent sequence modeling." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Overview\n", + "In the RNN, only the word before the prediction word is considered, that is, only the \"above\" in the context is considered, and the content after the word is not considered. This may miss some important information, making the content of the forecast less accurate. As in the case of TV shows, when a new character is introduced in the episode, the name of that character cannot be effectively predicted based on the content of previous episodes. But if we watch the later episodes, we might be able to make more effective predictions. Bidirectional RNNS are also based on the idea that they not only keep important information about the words before the word from the front to the back, but also keep important information about the words after the word from the back to the front, and then predict the word based on this important information.\n", + "First, let's see the architecture of BRNN cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Bi-RNN1](https://static-1300131294.cos.ap-shanghai.myqcloud.com/images/deep-learning/RNN/bi-rnn.png) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Code\n", + "Here we implement an Bi-RNN model on all a data set of Shakespeare works." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from keras.datasets import imdb\n", + "(x_train, y_train), (x_test, y_test) = imdb.load_data(\"imdb.npz\", num_words=1000)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Padding is a technique commonly used in natural language processing (NLP) to ensure that all input sequences have the same length. This is often necessary because many NLP models, such as neural networks, require fixed-length input sequences." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "max_len = 500\n", + "x_train = tf.keras.preprocessing.sequence.pad_sequences(x_train, maxlen=max_len)\n", + "x_test = tf.keras.preprocessing.sequence.pad_sequences(x_test, maxlen=max_len)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Build model" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "input_dim = 10000\n", + "output_dim = 1\n", + "# Create the input layer\n", + "inputs = tf.keras.Input(shape=(None,), dtype=\"int32\")\n", + " \n", + "# Create the model\n", + "x = tf.keras.layers.Embedding(input_dim, 128)(inputs)\n", + "x = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64, return_sequences=True))(x)\n", + "x = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64))(x)\n", + "outputs = tf.keras.layers.Dense(output_dim, activation=\"sigmoid\")(x)\n", + "model = tf.keras.Model(inputs, outputs)\n", + " \n", + "# Compile the model\n", + "model.compile(\"adam\", \"binary_crossentropy\", metrics=[\"accuracy\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Train the defined model using the imported data" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/4\n", + "782/782 [==============================] - 8842s 11s/step - loss: 0.5259 - accuracy: 0.7423 - val_loss: 0.3913 - val_accuracy: 0.8292\n", + "Epoch 2/4\n", + "782/782 [==============================] - 4015s 5s/step - loss: 0.3689 - accuracy: 0.8401 - val_loss: 0.3166 - val_accuracy: 0.8691\n", + "Epoch 3/4\n", + "782/782 [==============================] - 3542s 5s/step - loss: 0.3055 - accuracy: 0.8711 - val_loss: 0.2921 - val_accuracy: 0.8754\n", + "Epoch 4/4\n", + "782/782 [==============================] - 3748s 5s/step - loss: 0.2743 - accuracy: 0.8861 - val_loss: 0.2830 - val_accuracy: 0.8799\n" + ] + } + ], + "source": [ + "batch_size = 32\n", + "epochs = 4\n", + "history = model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, validation_data=(x_test, y_test))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Evaluation accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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hw4dnrqNPr+vGnK+/kyfP7OUSiUqKirq/J1o76smnWKthzZv3iwYGxsL33zzjXDt2jVhypQpQuvWrYWcnBxBEARh/PjxQlRUlKr/8ePHBQMDA+HTTz8VkpOThUWLFgmGhoZCUlKSWIfQbDQ9V0uWLBF+/vln4caNG0JiYqIwZswYwcTERLh69apYh9BsiouLhQsXLggXLlwQAAgrV64ULly4IGRkZAiCIAhRUVHC+PHjVf3T09MFMzMzYc6cOUJycrIQFxcnyGQyYd++fWIdQrPR9FytWrVK2LVrl/Dbb78JSUlJwsyZMwWpVCocOHBArENoFu+++65gZWUlHD58WLh7967qVVZWpurDz6s/NOR86etnVlRUlHDkyBHh5s2bwuXLl4WoqChBIpEIv/zyiyAI2vO+YgBqAp9//rnQvn17wcjISAgMDBROnTql+l3fvn2F8PBwtf7/+c9/hC5dughGRkZC9+7dhZ9++qmZKxaPJudq1qxZqr4ODg7CkCFDhPPnz4tQdfP7/VbtP79+Pz/h4eFC3759a23j6+srGBkZCR07dhQ2bNjQ7HWLQdNz9fHHHwudOnUSTExMBBsbG6Ffv37CwYMHxSm+GdV1jgCovU/4efWHhpwvff3M+utf/yq4uroKRkZGQps2bYSXXnpJFX4EQXveVxJBEISmvcZEREREpF04B4iIiIj0DgMQERER6R0GICIiItI7DEBERESkdxiAiIiISO8wABEREZHeYQAiIiIivcMARET0GBKJBLt27RK7DCJqAgxARKSVJk6cCIlEUuv1yiuviF0aEbUABmIXQET0OK+88go2bNig1mZsbCxSNUTUkvAKEBFpLWNjYzg6Oqq9rK2tAdQMT61duxaDBw+GqakpOnbsiG3btqltn5SUhAEDBsDU1BS2traYMmUKSkpK1PqsX78e3bt3h7GxMdq2bYuIiAi13xcUFGD48OEwMzND586dsXv3btXv7t+/j3HjxqFNmzYwNTVF586dawU2ItJODEBEpLOio6MxYsQIXLp0CePGjcOYMWOQnJwMACgtLcWgQYNgbW2Ns2fPYuvWrThw4IBawFm7di2mTZuGKVOmICkpCbt374a7u7va31iyZAneeOMNXL58GUOGDMG4ceNQWFio+vvXrl3D3r17kZycjLVr18LOzq75TgARNVyTL7dKRNQA4eHhgkwmE8zNzdVey5YtEwShZnXuqVOnqm0TFBQkvPvuu4IgCMKXX34pWFtbCyUlJarf//TTT4JUKhVycnIEQRAEJycnYf78+Y+tAYCwYMEC1c8lJSUCAGHv3r2CIAhCaGioMGnSpMY5YCJqVpwDRERaq3///li7dq1am42Njeqfe/Xqpfa7Xr164eLFiwCA5ORk+Pj4wNzcXPX7F154AUqlEikpKZBIJMjOzsZLL730xBq8vb1V/2xubg5LS0vk5eUBAN59912MGDEC58+fx8svv4ywsDAEBwc36FiJqHkxABGR1jI3N681JNVYTE1N69XP0NBQ7WeJRAKlUgkAGDx4MDIyMrBnzx7s378fL730EqZNm4ZPP/200eslosbFOUBEpLNOnTpV6+du3boBALp164ZLly6htLRU9fvjx49DKpXCw8MDFhYWcHNzQ0JCwjPV0KZNG4SHh2Pjxo2IjY3Fl19++Uz7I6LmwStARKS1KioqkJOTo9ZmYGCgmmi8detW+Pv7o3fv3vjuu+9w5swZxMfHAwDGjRuHRYsWITw8HIsXL0Z+fj6mT5+O8ePHw8HBAQCwePFiTJ06Ffb29hg8eDCKi4tx/PhxTJ8+vV71LVy4EH5+fujevTsqKirw448/qgIYEWk3BiAi0lr79u1D27Zt1do8PDxw/fp1ADV3aG3evBl/+9vf0LZtW3z//ffw9PQEAJiZmeHnn3/GzJkzERAQADMzM4wYMQIrV65U7Ss8PBzl5eVYtWoV/u///g92dnYYOXJkveszMjLC3LlzcevWLZiamqJPnz7YvHlzIxw5ETU1iSAIgthFEBFpSiKRYOfOnQgLCxO7FCLSQZwDRERERHqHAYiIiIj0DucAEZFO4ug9ET0LXgEiIiIivcMARERERHqHAYiIiIj0DgMQERER6R0GICIiItI7DEBERESkdxiAiIiISO8wABEREZHeYQAiIiIivfP/BaPmoRs6C7oAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.plot(history.history['accuracy'])\n", + "title = plt.title(\"History\")\n", + "xlabel = plt.xlabel(\"Epochs\")\n", + "ylabel = plt.ylabel(\"Accuracy\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "forecast" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 7s 7s/step\n", + "0\n", + "0\n", + "0\n", + "0\n" + ] + } + ], + "source": [ + "predictions = model.predict(x_test[:4])\n", + "for pred in predictions:\n", + " print(np.argmax(pred[0]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Acknowledgments\n", + "\n", + "Thanks to [Xin Hua](https://blog.csdn.net/mzgxinhua/article/details/135172830).It inspires the majority of the content in this chapter.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "open-machine-learning-jupyter-book", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/open-machine-learning-jupyter-book/deep-learning/lstm.ipynb b/open-machine-learning-jupyter-book/deep-learning/rnn/lstm.ipynb similarity index 100% rename from open-machine-learning-jupyter-book/deep-learning/lstm.ipynb rename to open-machine-learning-jupyter-book/deep-learning/rnn/lstm.ipynb diff --git a/open-machine-learning-jupyter-book/deep-learning/rnn.ipynb b/open-machine-learning-jupyter-book/deep-learning/rnn/rnn.ipynb similarity index 99% rename from open-machine-learning-jupyter-book/deep-learning/rnn.ipynb rename to open-machine-learning-jupyter-book/deep-learning/rnn/rnn.ipynb index 7358486a4..49550fd56 100644 --- a/open-machine-learning-jupyter-book/deep-learning/rnn.ipynb +++ b/open-machine-learning-jupyter-book/deep-learning/rnn/rnn.ipynb @@ -468,6 +468,17 @@ "plt.show()" ] }, + { + "cell_type": "markdown", + "id": "584e866f", + "metadata": {}, + "source": [ + "---\n", + "\n", + "```{tableofcontents}\n", + "```\n" + ] + }, { "cell_type": "markdown", "id": "3bc90f40", @@ -475,7 +486,7 @@ "source": [ "## Your turn! 🚀\n", "\n", - "You can practice your rnn skills by following the assignment [google stock price prediction rnn](../assignments/deep-learning/rnn/google-stock-price-prediction-rnn.ipynb)" + "You can practice your rnn skills by following the assignment [google stock price prediction rnn](../../assignments/deep-learning/rnn/google-stock-price-prediction-rnn.ipynb)" ] }, {