VERSION UPDATE: v2.3, REPRODUCIBILITY RESET
[notebooks.git] / jm-test / universal-approximation-rnn.ipynb
blob6528db471ac729ecbb76e68e05e96fc3fb66b7a6
2  "cells": [
3   {
4    "cell_type": "markdown",
5    "id": "9aae1d94",
6    "metadata": {},
7    "source": [
8     "Papers on uniform approximation theorem for RNN assumes that the RNN is recursion of the form $z_{k+1} = s(A z_k +B u_k +b)$, where $z$ is a state vector, $u$ is an external input vector, and $s$ is an activation function applied in each coordinate. Provide a sample code how to build and train such network in keras on a simple example data."
9    ]
10   },
11   {
12    "cell_type": "code",
13    "execution_count": 1,
14    "id": "b69a6764",
15    "metadata": {},
16    "outputs": [
17     {
18      "name": "stderr",
19      "output_type": "stream",
20      "text": [
21       "2023-12-30 14:07:04.784673: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA\n",
22       "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
23       "2023-12-30 14:07:09.339389: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA\n",
24       "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n"
25      ]
26     },
27     {
28      "name": "stdout",
29      "output_type": "stream",
30      "text": [
31       "16/16 [==============================] - 0s 1ms/step\n"
32      ]
33     },
34     {
35      "data": {
36       "image/png": "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\n",
37       "text/plain": [
38        "<Figure size 640x480 with 1 Axes>"
39       ]
40      },
41      "metadata": {},
42      "output_type": "display_data"
43     }
44    ],
45    "source": [
46     "import numpy as np\n",
47     "from keras.models import Sequential\n",
48     "from keras.layers import SimpleRNN, Dense\n",
49     "import matplotlib.pyplot as plt\n",
50     "\n",
51     "# Generating sine wave data\n",
52     "t = np.linspace(0, 50, 500)\n",
53     "data = np.sin(t)\n",
54     "\n",
55     "# Preparing dataset\n",
56     "def prepare_data(data, steps):\n",
57     "    X, y = [], []\n",
58     "    for i in range(len(data) - steps):\n",
59     "        X.append(data[i:i+steps])\n",
60     "        y.append(data[i+steps])\n",
61     "    return np.array(X), np.array(y)\n",
62     "\n",
63     "steps = 5\n",
64     "X, y = prepare_data(data, steps)\n",
65     "X = X.reshape(X.shape[0], X.shape[1], 1)\n",
66     "\n",
67     "# Building the RNN model\n",
68     "model = Sequential()\n",
69     "model.add(SimpleRNN(units=50, activation='tanh', input_shape=(steps, 1)))\n",
70     "model.add(Dense(1))\n",
71     "\n",
72     "# Compile the model\n",
73     "model.compile(optimizer='adam', loss='mean_squared_error')\n",
74     "\n",
75     "# Train the model\n",
76     "model.fit(X, y, epochs=100, batch_size=32, verbose=0)\n",
77     "\n",
78     "# Predictions for visualization\n",
79     "predictions = model.predict(X)\n",
80     "\n",
81     "# Plotting\n",
82     "plt.plot(t[steps:], data[steps:], label='Original')\n",
83     "plt.plot(t[steps:], predictions.ravel(), label='Predicted')\n",
84     "plt.legend()\n",
85     "plt.show()\n"
86    ]
87   },
88   {
89    "cell_type": "markdown",
90    "id": "45c13bbc",
91    "metadata": {},
92    "source": [
93     "This code does the following:\n",
94     "\n",
95     "* Generates a sine wave dataset.\n",
96     "* Prepares the data for training by creating sequences (of a defined number of steps) as input and the next value in the sequence as the target.\n",
97     "* Defines an RNN model with the SimpleRNN layer in Keras. The network uses tanh as the activation function.\n",
98     "* Compiles the model using the Adam optimizer and mean squared error as the loss function.\n",
99     "* Trains the model on the prepared data.\n",
100     "* Predicts the sine wave values using the trained model and plots the original data against the predictions for visual comparison.\n",
101     "\n",
102     "This example provides a basic understanding of building and training an RNN with Keras. You can modify the architecture, add more layers, or change hyperparameters to suit your specific problem."
103    ]
104   },
105   {
106    "cell_type": "markdown",
107    "id": "45aedb88",
108    "metadata": {},
109    "source": [
110     "Provide a code to get the matrices A and B from this network and reproduce model.predict() in plain python code."
111    ]
112   },
113   {
114    "cell_type": "markdown",
115    "id": "659afa1a",
116    "metadata": {},
117    "source": [
118     "To extract the matrices A and B from the trained RNN model and reproduce the model.predict() function in plain Python, you need to understand how RNNs are structured in Keras. In a SimpleRNN layer, the weights are organized as follows:\n",
119     "\n",
120     "* The kernel (weights for the input, equivalent to your B) is accessible via layer.get_weights()[0].\n",
121     "* The recurrent kernel (weights for the state, equivalent to your A) is accessible via layer.get_weights()[1].\n",
122     "* The bias vector (equivalent to your bb) is accessible via layer.get_weights()[2].\n",
123     "\n",
124     "First, let's extract these weights:"
125    ]
126   },
127   {
128    "cell_type": "code",
129    "execution_count": 2,
130    "id": "153c9180",
131    "metadata": {},
132    "outputs": [],
133    "source": [
134     "# Assuming model is the trained Keras model\n",
135     "rnn_layer = model.layers[0]  # SimpleRNN layer\n",
136     "\n",
137     "B, A, b = rnn_layer.get_weights()\n",
138     "dense_weights = rnn_layer.get_weights()"
139    ]
140   },
141   {
142    "cell_type": "code",
143    "execution_count": 3,
144    "id": "ec76222d",
145    "metadata": {},
146    "outputs": [
147     {
148      "name": "stdout",
149      "output_type": "stream",
150      "text": [
151       "A.shape= (50, 50)\n",
152       "B.shape= (1, 50)\n",
153       "b.shape= (50,)\n"
154      ]
155     }
156    ],
157    "source": [
158     "print('A.shape=',A.shape)\n",
159     "print('B.shape=',B.shape)\n",
160     "print('b.shape=',b.shape)"
161    ]
162   },
163   {
164    "cell_type": "code",
165    "execution_count": 4,
166    "id": "aeb881b9",
167    "metadata": {},
168    "outputs": [
169     {
170      "ename": "NameError",
171      "evalue": "name 'dense_weights' is not defined",
172      "output_type": "error",
173      "traceback": [
174       "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
175       "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
176       "Cell \u001b[0;32mIn[4], line 28\u001b[0m\n\u001b[1;32m     25\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m np\u001b[38;5;241m.\u001b[39marray(outputs)\n\u001b[1;32m     27\u001b[0m \u001b[38;5;66;03m# Use the revised function for prediction\u001b[39;00m\n\u001b[0;32m---> 28\u001b[0m manual_predictions \u001b[38;5;241m=\u001b[39m rnn_predict(X, A, B, b, \u001b[43mdense_weights\u001b[49m)\n\u001b[1;32m     29\u001b[0m manual_predictions \u001b[38;5;241m=\u001b[39m manual_predictions\u001b[38;5;241m.\u001b[39mreshape(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m)\n",
177       "\u001b[0;31mNameError\u001b[0m: name 'dense_weights' is not defined"
178      ]
179     }
180    ],
181    "source": [
182     "def tanh(x):\n",
183     "    return np.tanh(x)\n",
184     "\n",
185     "def rnn_predict(X, A, B, b, dense_weights):\n",
186     "    \"\"\"\n",
187     "    Reproduce Keras model prediction in plain Python.\n",
188     "    X: Input data (num_samples, num_timesteps, num_features)\n",
189     "    A: Recurrent kernel weights\n",
190     "    B: Input kernel weights\n",
191     "    b: Bias\n",
192     "    dense_weights: Weights and biases from the Dense layer\n",
193     "    \"\"\"\n",
194     "    num_samples, num_timesteps, num_features = X.shape\n",
195     "    n_units = A.shape[0]  # Number of units in the RNN layer\n",
196     "    outputs = []\n",
197     "\n",
198     "    for sample in X:\n",
199     "        h = np.zeros(n_units)  # Initial state for each sample\n",
200     "        for t in range(num_timesteps):\n",
201     "            x_t = sample[t]  # Input at time step t\n",
202     "            h = tanh(np.dot(h, A) + np.dot(x_t, B) + b)\n",
203     "        y = np.dot(h, dense_weights[0]) + dense_weights[1]  # Dense layer transformation\n",
204     "        outputs.append(y)\n",
205     "\n",
206     "    return np.array(outputs)\n",
207     "\n",
208     "# Use the revised function for prediction\n",
209     "manual_predictions = rnn_predict(X, A, B, b, dense_weights)\n",
210     "manual_predictions = manual_predictions.reshape(-1)\n"
211    ]
212   },
213   {
214    "cell_type": "code",
215    "execution_count": null,
216    "id": "ac13cac4",
217    "metadata": {},
218    "outputs": [],
219    "source": []
220   },
221   {
222    "cell_type": "code",
223    "execution_count": null,
224    "id": "00f5beb4",
225    "metadata": {},
226    "outputs": [],
227    "source": []
228   }
229  ],
230  "metadata": {
231   "kernelspec": {
232    "display_name": "Python 3 (ipykernel)",
233    "language": "python",
234    "name": "python3"
235   },
236   "language_info": {
237    "codemirror_mode": {
238     "name": "ipython",
239     "version": 3
240    },
241    "file_extension": ".py",
242    "mimetype": "text/x-python",
243    "name": "python",
244    "nbconvert_exporter": "python",
245    "pygments_lexer": "ipython3",
246    "version": "3.10.9"
247   }
248  },
249  "nbformat": 4,
250  "nbformat_minor": 5