diff --git a/doc/BookChapters/chapter1.dlog b/doc/BookChapters/chapter1.dlog index 6162c8df1..875fd7507 100644 --- a/doc/BookChapters/chapter1.dlog +++ b/doc/BookChapters/chapter1.dlog @@ -34,3 +34,12 @@ Translating doconce text in chapter1.do.txt to ipynb Failed to remove ans_at_end environment Failed to remove sol_at_end environment output in chapter1.ipynb +Translating doconce text in chapter1.do.txt to ipynb +*** replacing \bm{...} by \boldsymbol{...} (\bm is not supported by MathJax) + +*** warning: latex envir \begin{bmatrix} does not work well in Markdown. Stick to \[ ... \], equation, equation*, align, or align* environments in math environments. + +*** warning: latex envir \begin{bmatrix} does not work well in Markdown. Stick to \[ ... \], equation, equation*, align, or align* environments in math environments. +Failed to remove ans_at_end environment +Failed to remove sol_at_end environment +output in chapter1.ipynb diff --git a/doc/BookChapters/chapter1.do.txt b/doc/BookChapters/chapter1.do.txt index e822f162e..fd8d5748f 100644 --- a/doc/BookChapters/chapter1.do.txt +++ b/doc/BookChapters/chapter1.do.txt @@ -2163,16 +2163,13 @@ TestError = np.zeros(maxdegree) TrainError = np.zeros(maxdegree) polydegree = np.zeros(maxdegree) x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) -scaler = StandardScaler() -scaler.fit(x_train) -x_train_scaled = scaler.transform(x_train) -x_test_scaled = scaler.transform(x_test) + for degree in range(maxdegree): model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) - clf = model.fit(x_train_scaled,y_train) - y_fit = clf.predict(x_train_scaled) - y_pred = clf.predict(x_test_scaled) + clf = model.fit(x_train,y_train) + y_fit = clf.predict(x_train) + y_pred = clf.predict(x_test) polydegree[degree] = degree TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) ) TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) ) diff --git a/doc/LectureNotes/_build/.doctrees/Clustering.doctree b/doc/LectureNotes/_build/.doctrees/Clustering.doctree index 10fd7631c..cef131b01 100644 Binary files a/doc/LectureNotes/_build/.doctrees/Clustering.doctree and b/doc/LectureNotes/_build/.doctrees/Clustering.doctree differ diff --git a/doc/LectureNotes/_build/.doctrees/chapter1.doctree b/doc/LectureNotes/_build/.doctrees/chapter1.doctree index 5009331e6..0c4e5642b 100644 Binary files a/doc/LectureNotes/_build/.doctrees/chapter1.doctree and b/doc/LectureNotes/_build/.doctrees/chapter1.doctree differ diff --git a/doc/LectureNotes/_build/.doctrees/chapter10.doctree b/doc/LectureNotes/_build/.doctrees/chapter10.doctree index 75555916a..ea0cecd85 100644 Binary files a/doc/LectureNotes/_build/.doctrees/chapter10.doctree and b/doc/LectureNotes/_build/.doctrees/chapter10.doctree differ diff --git a/doc/LectureNotes/_build/jupyter_execute/Clustering.ipynb b/doc/LectureNotes/_build/jupyter_execute/Clustering.ipynb index be93f392e..802668d7d 100644 --- a/doc/LectureNotes/_build/jupyter_execute/Clustering.ipynb +++ b/doc/LectureNotes/_build/jupyter_execute/Clustering.ipynb @@ -475,7 +475,7 @@ "output_type": "stream", "text": [ "Converged at iteration 5\n", - "Runtime: 0.4884450435638428 seconds\n" + "Runtime: 0.4787557125091553 seconds\n" ] } ], @@ -604,7 +604,7 @@ "output_type": "stream", "text": [ "Converged at iteration: 5\n", - "Runtime: 0.44310808181762695 seconds\n" + "Runtime: 0.4250478744506836 seconds\n" ] } ], @@ -745,7 +745,7 @@ "output_type": "stream", "text": [ "Converged at iteration: 11\n", - "Runtime: 0.8929829597473145 seconds\n", + "Runtime: 0.8499350547790527 seconds\n", " " ] } @@ -877,7 +877,7 @@ "output_type": "stream", "text": [ "Converged at iteration: 5\n", - "Runtime: 0.0037839412689208984 seconds\n" + "Runtime: 0.003952980041503906 seconds\n" ] } ], diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1.ipynb b/doc/LectureNotes/_build/jupyter_execute/chapter1.ipynb index 315fd696c..e4f0ebb84 100644 --- a/doc/LectureNotes/_build/jupyter_execute/chapter1.ipynb +++ b/doc/LectureNotes/_build/jupyter_execute/chapter1.ipynb @@ -310,7 +310,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -461,7 +461,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -526,18 +526,18 @@ "output_type": "stream", "text": [ "The intercept alpha: \n", - " [2.13202326]\n", + " [1.76691438]\n", "Coefficient beta : \n", - " [[4.81994803]]\n", - "Mean squared error: 0.22\n", - "Variance score: 0.90\n", + " [[5.37626646]]\n", + "Mean squared error: 0.25\n", + "Variance score: 0.92\n", "Mean squared log error: 0.01\n", - "Mean absolute error: 0.36\n" + "Mean absolute error: 0.40\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -730,7 +730,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -747,7 +747,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.004999999999999987\n" + "0.0050000000000000044\n" ] } ], @@ -1322,7 +1322,7 @@ "270 3344 160 110 270 Ds 7.253775 7.253775\n", "\n", "[267 rows x 6 columns]\n", - "0.009883615646716184\n" + "0.009883615646716186\n" ] } ], @@ -1419,8 +1419,6 @@ "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", " warnings.warn(\n", "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", - " warnings.warn(\n", - "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", " warnings.warn(\n" ] }, @@ -1430,6 +1428,16 @@ "text": [ "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", " warnings.warn(\n", + "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", + " warnings.warn(\n", + "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", " warnings.warn(\n", "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", @@ -1459,8 +1467,6 @@ "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", " warnings.warn(\n", "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", - " warnings.warn(\n", - "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", " warnings.warn(\n" ] }, @@ -1473,8 +1479,6 @@ "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", " warnings.warn(\n", "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", - " warnings.warn(\n", - "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", " warnings.warn(\n" ] }, @@ -1508,16 +1512,36 @@ " warnings.warn(\n" ] }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", + " warnings.warn(\n", + "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", + " warnings.warn(\n", + "/Users/mhjensen/opt/anaconda3/lib/python3.8/site-packages/sklearn/neural_network/_multilayer_perceptron.py:582: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n", + " warnings.warn(\n" + ] + }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAJjCAYAAADQ22+yAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABoM0lEQVR4nO3de5yM5f/H8dfMHol13F02he2gko5UKKLCOm+RU3KopFhKySaHkuOmnCsdRJJQsSkbkVUiUb5EJz85n3Ydai32NDO/P252bbtuO/bemT28nz32kbnnnrmvz8zcM9e8r+u+x+ZyuVyIiIiIiGXs3m6AiIiISHGjDpaIiIiIxdTBEhEREbGYOlgiIiIiFlMHS0RERMRi6mCJiIiIWMzX2w0QKclGjx7Nxo0bAdi5cyeXX345gYGBACxYsCDz3xfzxBNPMGTIEK6++uoLrjNlyhSqV69O+/bt893uc6Kiovjpp5+Ij4+nVKlSlt2viEhRZ9N5sEQKh6ZNmzJlyhTq1Knj7abkyZEjR2jXrh0333wz9957L126dPF2k0RECg0NEYoUUtOmTeOxxx6jTZs2PP/88xw9epSnn36aTp060bRpU7p3786xY8cAo3P266+/smHDBjp37szgwYNp3749LVu25McffwQgOjqa999/H4A6deowbdo0OnfuTNOmTZk9ezYADoeDcePG8cADD/Dggw/y8ssv071791zbt3DhQurXr09kZCQffvgh539X27JlCx07dqR169ZERkayfv160+W1atXi+PHjmbc/d3nDhg20bduWzp0707ZtW9LS0hg9ejQdO3akZcuWRERE8PPPPwNw6tQpXnzxRZo3b07Lli154403OH36NPXq1WPXrl2Z992rVy9WrlxpxVMkInJB6mCJFGIHDhxg8eLFTJw4ka+++opbbrmFBQsWsGrVKgIDA4mNjc1xm61bt9K7d2+WLFlChw4dmD59eo510tLSqFChAp988glTp07l9ddfJzU1lUWLFrF9+3a+/PJLPvnkE/bt25druzIyMli4cCFt27aladOmHDt2jO+++w6A9PR0+vXrR79+/fjyyy959dVXGTt2LGlpabkudzqdpo/Bjh07eP311/niiy/Yvn07CQkJLFiwgGXLlhEZGcm7774LwNSpU0lNTWXZsmUsWbKEX375hV9//ZX27duzaNEiAPbu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EREREYspwRIRERFTOtGo+5RgiYiIiFhMCZaIiIiY0hws9ynBEhEREbGYEiwRERExpRONuk+PmIiIiIjFlGCJiIiIKc3Bcp8SLBERERGLKcESERERUzoPlvuUYImIiIhYTAmWiIiImNIcLPcpwRIRERGxmBIsERERMaUEy31KsEREREQspg6WiIiIiMU0RCgiIiKmNEToviLfwapkv8zbTRARERHJpsh3sERERKRgKcFyn+ZgiYiIiFhMCZaIiIiY0k/luE8JloiIiIjFlGCJiIiIKc3Bcp8SLBERERGLKcESERERU0qw3KcES0RERMRiSrBERETElBIs9ynBEhEREbGYEiwRERExpQTLfUqwRERERCymBEtERERMuZRguU0JloiIiIjF1MESERERsZiGCEVERMSUfuzZfUqwRERERCymBEtERERM6TQN7lOCJSIiImIxJVgiIiJiSqdpcJ8SLBERERGLKcESERERU5qD5T4lWCIiIiIWU4IlIiIipjQHy31KsEREREQspgRLRERETGkOlvuUYImIiIhYTB0sERERMeVyee7PSgkJCfTp04f27dvTuXNn9u/fD0BSUhJ9+vQhIiKCbt26kZiYCEBaWhqDBw8mIiKCyMhIdu7cecnbVgdLREREiqUXXniBJk2asGTJEtq1a8fEiRMBmDx5MnXr1iUuLo6OHTsyZswYAObOnUupUqWIi4tj6NChREdHX/K2NQdLRERETDnx3ByspKQkkpKSciwPCgoiKCgoz/dz/Phx/vjjDz744AMAHnroIerXrw9AfHw88+bNA6B169aMGjWK9PR04uPjGThwIAD16tXjxIkTHDx4kLCwMLfrUAdLRERECo05c+Ywffr0HMv79+9PVFRUnu9n3759hIWFMXbsWDZs2EBYWBjDhw8HjKHD4OBgAHx9fSlTpgzHjx/PthwgODiYw4cPq4MlIiIiRVuPHj2IjIzMsdwsvYqLi2PcuHHZllWvXp3ffvuNqKgoXnrpJRYtWkR0dDRz587N9T7s9txnTV1o+cWogyUiIiKmPHmiUXeHAgEiIiKIiIjItmzv3r1ERkbSpEkTwBgKHD16NAAhISEcPXqUKlWqkJGRQXJyMuXLlyckJITExESqV68OQGJiIiEhIZdUhya5i4iISLFz5ZVXEhoaypo1awBYvXo1tWvXBqBx48YsWbIEgGXL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EhEREXNKsNymBEtERETEYkqwRERExJRONOo+JVgiIiIiFlOCJSIiIuY0B8ttSrBERERELKYES0RERExpDpb7lGCJiIiIWEwJloiIiJjTHCy3KcESERERsZgSLBEREbkIzcFylxIsEREREYspwRIRERFzmoPlNiVYIiIiIhZTB0tERETEYhoiFBEREXMaInSbEiwRERERiynBEhEREXP6qRy3KcESERERsZgSLBERETHl0hwstynBEhEREbGYOlgiIiJizuXBPwvt37+fbt260a5dO7p3786BAwcASEtLY/DgwURERBAZGcnOnTuNMl0uJkyYQIsWLWjZsiU///zzJW9bHSwREREplqZMmUKrVq2IjY2lWbNmTJo0CYC5c+dSqlQp4uLiGDp0KNHR0QAsX76cnTt3smzZMmbMmEF0dDQZGRmXtG3NwRIRERFzHjyKMCkpiaSkpBzLg4KCCAoKcuu+nE4nycnJAJw5c4bAwEAA4uPjGThwIAD16tXjxIkTHDx4kDVr1tCyZUvsdjs1a9YkLCyMzZs3U69ePbfrUAdLRERECo05c+Ywffr0HMv79+9PVFSUW/c1cOBAOnfuzNy5c0lPT2fBggUAJCQkEBwcnLlecHAwhw8fJiEhgZCQkBzLL4U6WCIiImLK5sGjCHv06EFkZGSO5WbpVVxcHOPGjcu2LDw8nNTUVEaNGsX999/P8uXL6d+/P1988UWu92G323Hlcrik3X5ps6nUwRIREZFC41KGAiMiIoiIiMi27Pjx40RERHD//fcD0Lx5c0aOHMmJEycICQkhMTGR6tWrA5CYmEhISAihoaEkJiZm3se55ZdCk9xFRETEXBE8irBChQoEBASwadMmAH7++Wcuu+wyKlasSOPGjYmNjQVg06ZNBAQEEBYWRqNGjVi6dCkOh4M9e/awe/du6tSpc0nbV4IlIiIixY7NZmP69Om8+uqrpKSkcNlllzFt2jQAunfvzogRI2jVqhX+/v7ExMQA0KJFC7Zu3Urbtm0BGDNmTObEeLe378ptwLEIcR6+1ttNEBER8Sh7lb88ur0aMyd6bFu7n3zeY9sqSBoiFBEREbGYOlgiIiIiFtMcLBERETFXpCcTeYcSLBERERGLKcESERERc0qw3KYES0RERMRiSrBERETEnBIstynBEhEREbGYEiwREREx57J5uwVFjhIsEREREYspwRIRERFTNs3BcpsSLBERERGLKcESERERc0qw3KYES0RERMRiSrAuIH49THoH0tKhVjiMHgJlLsu6fsnXMGdR1uWTyXAkEVZ/CpUrZi2PGgYhlWH4Mx5ruiXyW//Hi+HTryA1FWrXgtEvgL+/5+u4VPmp39cXXnkD/vg/KBUID0bAIw95voZLld/nvkFbCA3Our53Z2jzgOfan1/5qf/VybD3QNZ1+w9BvZvhzXEea36+6fkvufu+WMvmcrmKdPDnPHyt5fd5/B9o0wPmzYAa1WDi23DqNIwclPv66RnQPQoiI6BT26zl730Msz6BiKZFq4OV3/pXfAdT3jVuH1QGnhkJda6DJ7p5tIxLlt/6o8eCjw+Meh4cTuj/EnRpD00aeLKKS5Pf2nfthadehK/nebTZlrFq3wf49XcYOBLmTYeqIQXedEvo+S86+769yl/W36mJmtNe99i2dkU957FtFSSPDRHu3r2bI0eOALBo0SJGjx7NsmXLPLV5t/ywEW68ztjBALq0gy9XwoW6ou99DJUqZH+D3fALrP0JOrUr+PZaLb/1f7EcenaC8kFgt8PLz0HbZp5puxXyW//2v6BdM+ON1t8PGteHFWs80/b8ym/tm7eBjx16DIR2vWDGbHA4PNJ0S1ix74ORfrw4Dl7sX3Q6V6DnvyTv+xdjc3nur7i46BDhrFmzmD59Og6Hg7CwMGrVqpX5d+2111KtWrWLbmT27NnMnTsXp9PJXXfdxaFDh3jggQf47LPP2LVrF/369bOkGKscTsj+phgaDMmnbJw67coWFQOc+AdmL4DP3stalnAUxk6DdyfCwi880mRL5bf+3fvOJlaDjcfi9pvg+b4eabol8lv/TddD7Aq4tQ6kpcE3a4yhg6Igv7VnOKBBXRj8FKSkQt9oY3ilR0ePND/f8lv/OZ99BcGV4YFGBdpcy+n5L7n7vljvok/9zJkziYmJ4aabbmLfvn389ddf/Pnnn3z33Xfs2LEDgGuuuYb58+df8D4+++wzli1bxtGjR2ndujU//vgjAQEBdOzYkQ4dOhS6DpbTmftyey5538Kl0PRuqFbVuJyeAYNegRejIKRSwbWxIOWnfjAeg3WbYMZYY97Vi2Nh8nswNKpg2mu1/NY/5GmIeQsefByCKxofOJu3FUxbrZbf2h9uk/Vvf3/o+TDM/azofMDmt/5z5iwyhomKGj3/uS8vCfv+RelM7m67aAerTJky3Hvvvfj6+hISEsLtt9+e7fr9+/dndrQuxOl04u/vz+WXX07v3r0JCAjIvM5RCPPjqqGw9fesy0eOQrmyLkqXyrlu3GoYOiDr8rY/4MAhmDDDuHz0uBGRp6YZE72LgvzUD8ak/vvvyZoY2qYZvDWn4NprtfzWn3zaSOzKBxmX3/0Yrrx40Fso5Lf22OVw3dVQ6yrjsstVtL7B57d+gN/+Mvb5ercUWDMLjJ7/krvvi/UuOgerT58+LFq06ILXV6tWjSZNmpjeR7NmzXjkkUdwOBxERRkxxh9//EHXrl2JiIhws8kFr2E92PIb7N5vXF7wBTRtmHO9f08aRwzdemPWsltvNI4mWfy+8deprTHJvah0riB/9QM0bwzL440hApcLVn1vzGsoKvJb/4JYmDbL+PfR4/Dpl9D6voJts1XyW/uOXUbtDofx/M9bDBHmbw+FSn7rB9i4Be68DWxF8Au/nv+Su++L9S763WL8+PGkp6fz/fffc88993D99ddTq1YtSpXKpUt/AQMHDmTjxo34+PhkLvP39ycqKorGjRtfWssLUKUKMCYanhkB6elwxeUwfqiRTg1/zeg4AezdD8GVwK8IfUPLi/zW36W98QbU4QnjSJobroEhhWsU2FR+6+/zCAwZA216Gh3Mfj2hzvWeruLS5Lf2fj1h9GRjgnN6BrS4Fzq29nAR+WDFvr9nP1xexbPttoqe/5K7719UMZp87ikXPU3Dvn37+OOPP/jzzz/5888/+eOPPzh48CDVqlVj+fLlnmrnBRXEaRpEREQKM0+fpiF88hse29bfz1zgvBhFzEWzlyuuuIIrrriCBx7IOlPc6dOn+esvzz65IiIi4iVKsNx2SefBKl26NLfccovFTREREREpHorZ7CERERGxWnE6Aain6MeeRURERCymBEtERETMKcFymxIsEREREYspwRIRERFzSrDcpgRLRERExGJKsERERMSUjiJ0nxIsEREREYspwRIRERFzriL46+VepgRLRERExGJKsERERMSc5mC5TQmWiIiIiMXUwRIRERGxmIYIRURExJRO0+A+JVgiIiIiFlOCJSIiIuaUYLlNCZaIiIiIxZRgiYiIiCnNwXKfEiwRERERiynBEhEREXNKsNymBEtERETEYkqwRERExJwSLLcpwRIRERGx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yd1tSrBERERELKYES0REREzZPPAjzMWNEiwRERERiynBEhEREXOag+U2JVgiIiIiFlOCJSIiIuYUYLlNCZaIiIiIxZRgiYiIiCmb5mC5TQmWiIiIiMWUYImIiIg5JVhuU4IlIiIiYjElWCIiImJOZ3J3mxIsEREREYspwRIRERFTOorQfUqwRERERCymDpaIiIiIxTREKCIiIuY0ROg2JVgiIiIiFlOCJVJEHXCc9HYTvOqRvoO83QSv8v/qJ283wWv+nljf203wup2efvkrwXKbEiwRERERiynBEhEREXM60ajblGCJiIiIWEwJloiIiJjSiUbdpwRLRERExGJKsERERMScEiy3KcESERERsZgSLBERETGnBMttSrBERERELKYES0RERMwpwXKbEiwRERERiynBEhEREXM6k7vblGCJiIiIWEwdLBERERGLaYhQRERETOmnctynBEtERETEYkqwRERExJwSLLcpwRIRERGxmBIsERERMedUguUuJVgiIiIiFlOCJSIiIuY0B8ttSrBERERELKYES0RERMwpwXKbEiwRERERiynBEhEREXNKsNymBEtERESKtSlTpjBt2rTMy8nJyTz33HO0b9+e9u3bs337dgDS0tIYPHgwERERREZGsnPnTgBcLhcTJkygRYsWtGzZkp9//vmi21QHS0RERMw5XZ77s9DJkycZOnQos2bNyrZ83LhxVK1alSVLljBo0CBefvllAObOnUupUqWIi4tj6NChREdHA7B8+XJ27tzJsmXLmDFjBtHR0WRkZJhuW0OEIiIiUmgkJSWRlJSUY3lQUBBBQUFu3deqVauoUaMGvXr1ylzmcrlYsWIFq1atAqBRo0ZUrVoVgPj4eAYOHAhAvXr1OHHiBAcPHmTNmjW0bNkSu91OzZo1CQsLY/PmzdSrV++C21YHS0RERMy5nB7b1Jw5c5g+fXqO5f379ycqKsqt+2rfvj1AtuHBY8eO4e/vz0cffcSKFSsICgpi6NChACQkJBAcHJy5bnBwMIcPHyYhIYGQkJAcy82ogyUiIiKFRo8ePYiMjMyx3Cy9iouLY9y4cdmWhYeHM3v27BzrOhwOjh49Srly5ViyZAk//PAD/fr1y0y0/stut+PKZZK/3W4+y0odLBERESk0LmUoMCIigoiIiDytW6FCBXx9fWndujUADRs25PTp0xw7doyQ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6eVWecayZcv44YcfaNeuHVOnTuXbb79l7Nix3m6Wx2zatIn169dnXna5XCVqLlblypWpX78+FStWJDAwkPvuu69EjVyIe9TBukQNGjRg/fr1HD9+nDNnzrBixQoaNWrk7WaJBxw6dIh+/foxceJEWrVq5e3meNz+/fsZNmwYaWlppKWlsWrVKm6//XZvN8sjPvjgA7788ktiY2MZMGAATZs2ZejQod5ulsecPHmSmJgYUlNTSU5OZvHixSXm4A6AJk2asHbtWpKSknA4HHz//ffUrl3b282SQqrkfPWwWGhoKM8++yyPPvoo6enpdOjQgZtuusnbzRIPeP/990lNTWX8+PGZyzp37kyXLl282CrPady4MVu2bKF9+/b4+PjQrFmzEtnRLImaNGmS+dw7nU66du3Krbfe6u1meczNN9/M448/TteuXUlPT6dhw4Y89NBD3m6WFFI2V26TiURERETkkmmIUERERMRi6mCJiIiIWEwdLBERERGLqYMlIiIiYjF1sEREREQspg6WiIiIiMXUwRIRERGxmDpYIuK2iIgIGjVqxI4dO7zdFBGRQkkdLBFx25dffkmNGjVYvny5t5siIlIoqYMlIm7z8fHh9ttvLzE/8iwi4i79FqGIuC0lJYWvvvoK/dKWiEjulGCJiNsmTZpEaGgo+/bt49SpU95ujohIoaMOloi4ZfPmzXz99ddMmzaNsmXL8tdff3m7SSIihY46WCKSZ6mpqbz44ou88sorlC9fnuuuu07zsEREcqEOlojk2ZQpU7j11lu59957Abjuuuv4448/vNsoEZFCSB0sEcmTrVu38vXXXzN06NDMZddff70SLBGRXNhcOgxIRERExFJKsEREREQspg6WiIiIiMXUwRIRERGxmDpYIiIiIhZTB0tERETEYupgiYiIiFhMHSwRERERi/0/fVEyGJnxF94AAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl4AAAJjCAYAAADdxR/1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABjRElEQVR4nO3deZyVc//H8dc5M02LSmSm1VKWkLJliVvJ2qIN3bIka7jJnpIlS1GJpLqtRbKHNkoRlSVLuHXLTUQpbVNhtM5yzu+P66dF0zE1Z65pptfT4zx0rrNcn+91neV73t/vdU0kHo/HkSRJUpGLFncBkiRJOws7XpIkSSGx4yVJkhQSO16SJEkhseMlSZIUEjtekiRJIUkt7gKknVnv3r357LPPAJg7dy61atWiXLlyALz88ssb/v13Lr/8crp3785+++231fsMGjSIvffem3bt2hW67j917dqVTz/9lKlTp1K+fPmkPa8klVYRz+Ml7RhOOukkBg0aRIMGDYq7lAJZunQpbdu25dBDD+XEE0/k3HPPLe6SJGmH51CjtIMaPHgwl156Ka1bt+bmm29m+fLl/Otf/+Kcc87hpJNOolOnTqxYsQIIOm3//e9/+eSTT+jYsSPdunWjXbt2tGzZko8//hiAHj16MGzYMAAaNGjA4MGD6dixIyeddBLPPPMMAHl5edx///2ceuqpnHnmmdx111106tQp3/peeeUVGjduTPv27Xn22WfZ9DfcV199RYcOHTjjjDNo3749M2bMSLi8Xr16rFy5csPj/7z+ySef0KZNGzp27EibNm3Izs6md+/edOjQgZYtW9KiRQs+//xzAFavXs2tt97K6aefTsuWLXnooYdYs2YNRx11FD/99NOG57744ot55513krGLJGmb2fGSdmC//PILo0ePZsCAAbz55pscdthhvPzyy0yZMoVy5coxduzYLR4za9YsLrnkEsaMGcPZZ5/NkCFDtrhPdnY2u+22Gy+99BKPPPIIDz74IOvXr2fUqFHMnj2bN954g5deeokFCxbkW1dubi6vvPIKbdq04aSTTmLFihVMnz4dgJycHK6++mquvvpq3njjDe69917uu+8+srOz810ei8USboPvv/+eBx98kHHjxjF79myWLVvGyy+/zIQJE2jfvj1PPvkkAI888gjr169nwoQJjBkzhi+++IL//ve/tGvXjlGjRgHw888/89NPP9GsWbNt2g+SlCzO8ZJ2YIcddhipqcHbtHPnzsycOZOnn36aefPm8f3333PooYdu8ZiaNWty0EEHAXDwwQczevTofJ/75JNPBqB+/fpkZ2ezZs0apk2bRtu2bSlbtiwA55xzDiNHjtzisVOmTCEWi3HCCSeQmppKy5YtGTFiBE2bNmXOnDlEo1FOPPFEAA455BDGjx/P7Nmz813+d2rUqEGtWrUAOPzww9l11103dAo/+eQTdtllFwA++ugjbr31VlJSUkhJSeG5554DICMjgwsuuIAbbriBl19+mbPPPpuUlJS/Xa8kFQU7XtIOrEKFChv+/cADDzBr1izOOussjjnmGHJzc8lviuamE/IjkUi+9wE2dK4ikQgA8Xh8QyfvT9Fo/qH4iy++yLp16zjttNOAIEHLzMzk+++/JyUlZcNz/mnOnDlbXV63bt3NlmVnZ292fdNtMHXqVPr06cPFF1/MySefTN26dRk3bhwAqampmz3/4sWLKVeuHHXq1KFevXpMmTKF8ePHb0i/JKk4ONQolRAffPABnTt3pl27dlStWpWPPvqIvLy8pK6jadOmjBs3juzsbHJzc/NNy3766Sc+/fRTRo8ezbvvvsu7777LBx98QKNGjRgxYgR169YlEonw4YcfAjB79mw6d+681eWxWIzdd9+d//73vwC8/fbbW63vww8/pFmzZpx33nk0aNCAd955Z8M2aNy4MaNHjyYWi5Gdnc2111674YjR8847j/79+3PooYdSrVq1pG4zSdoWJl5SCXH11VfTv39//v3vf5OSksIRRxzBzz//nNR1nHnmmfz000+0a9eOChUqULt27S1OE/Hiiy9yyimnsNdee222/JprruGKK67gxhtvZPDgwdx3333079+fMmXKMHjwYNLS0ra6/Pbbb+eee+6hcuXKHHfccaSnp+dbX8eOHbn55ptp3bo1KSkpNGrUiMmTJxOLxbjmmmvo06cPbdu2JS8vj5YtW25I5Jo1a8btt99Ox44dk7q9JGlbeToJSRt88MEHrFixgrZt2wLBecbKli1Lt27dirmywvniiy+44447eOONN7YY7pSkMNnxkrTB0qVL6dGjBytWrCAvL48DDzyQu+66i0qVKhV3adute/fufPrpp/Tr14+jjz66uMuRtJOz4yVJkkq88ePH8+ijj5KTk8NF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\n", "text/plain": [ "
" ] }, "metadata": { "filenames": { - "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter1_61_10.png" + "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter1_61_13.png" } }, "output_type": "display_data" @@ -3264,15 +3288,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "[1.95320466 0.26945878 4.72145114]\n", + "[1.95042842 0.23671948 4.75963006]\n", "Training R2\n", - "0.9972598270118292\n", + "0.9951052834261356\n", "Training MSE\n", - "0.0068740175620408865\n", + "0.009330116621524378\n", "Test R2\n", - "0.9981645034105093\n", + "0.9946376411631981\n", "Test MSE\n", - "0.005584729797915798\n" + "0.014653795785269241\n" ] } ], @@ -3376,13 +3400,13 @@ "output_type": "stream", "text": [ "Training R2\n", - "0.9999901489260536\n", + "0.9999867383482111\n", "Training MSE\n", - "3.593710335647101\n", + "6.594186465773493\n", "Test R2\n", - "0.999963138868375\n", + "0.9999026871593244\n", "Test MSE\n", - "27.494711856278172\n" + "6.7878553902416146\n" ] } ], @@ -4552,16 +4576,13 @@ "TrainError = np.zeros(maxdegree)\n", "polydegree = np.zeros(maxdegree)\n", "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)\n", - "scaler = StandardScaler()\n", - "scaler.fit(x_train)\n", - "x_train_scaled = scaler.transform(x_train)\n", - "x_test_scaled = scaler.transform(x_test)\n", + "\n", "\n", "for degree in range(maxdegree):\n", " model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False))\n", - " clf = model.fit(x_train_scaled,y_train)\n", - " y_fit = clf.predict(x_train_scaled)\n", - " y_pred = clf.predict(x_test_scaled) \n", + " clf = model.fit(x_train,y_train)\n", + " y_fit = clf.predict(x_train)\n", + " y_pred = clf.predict(x_test) \n", " polydegree[degree] = degree\n", " TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) )\n", " TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) )\n", diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1.py b/doc/LectureNotes/_build/jupyter_execute/chapter1.py index be4c4230e..e0298542b 100644 --- a/doc/LectureNotes/_build/jupyter_execute/chapter1.py +++ b/doc/LectureNotes/_build/jupyter_execute/chapter1.py @@ -2120,16 +2120,13 @@ TestError = np.zeros(maxdegree) TrainError = np.zeros(maxdegree) polydegree = np.zeros(maxdegree) x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2) -scaler = StandardScaler() -scaler.fit(x_train) -x_train_scaled = scaler.transform(x_train) -x_test_scaled = scaler.transform(x_test) + for degree in range(maxdegree): model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False)) - clf = model.fit(x_train_scaled,y_train) - y_fit = clf.predict(x_train_scaled) - y_pred = clf.predict(x_test_scaled) + clf = model.fit(x_train,y_train) + y_fit = clf.predict(x_train) + y_pred = clf.predict(x_test) polydegree[degree] = degree TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) ) TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) ) diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter10.ipynb b/doc/LectureNotes/_build/jupyter_execute/chapter10.ipynb index e0377854a..6f379efd6 100644 --- a/doc/LectureNotes/_build/jupyter_execute/chapter10.ipynb +++ b/doc/LectureNotes/_build/jupyter_execute/chapter10.ipynb @@ -2400,7 +2400,13 @@ "Learning rate = 10.0\n", "Lambda = 0.01\n", "Accuracy score on test set: 0.08888888888888889\n", - "\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "Learning rate = 10.0\n", "Lambda = 0.1\n", "Accuracy score on test set: 0.10555555555555556\n", diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1_11_0.png b/doc/LectureNotes/_build/jupyter_execute/chapter1_11_0.png index a447113fc..da4825958 100644 Binary files a/doc/LectureNotes/_build/jupyter_execute/chapter1_11_0.png and b/doc/LectureNotes/_build/jupyter_execute/chapter1_11_0.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1_13_1.png b/doc/LectureNotes/_build/jupyter_execute/chapter1_13_1.png index feeef6449..16904dc91 100644 Binary files a/doc/LectureNotes/_build/jupyter_execute/chapter1_13_1.png and b/doc/LectureNotes/_build/jupyter_execute/chapter1_13_1.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1_27_0.png b/doc/LectureNotes/_build/jupyter_execute/chapter1_27_0.png index c166967ec..c3aaeee4c 100644 Binary files a/doc/LectureNotes/_build/jupyter_execute/chapter1_27_0.png and b/doc/LectureNotes/_build/jupyter_execute/chapter1_27_0.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1_3_0.png b/doc/LectureNotes/_build/jupyter_execute/chapter1_3_0.png index 3c1c5f710..e3b21a8a9 100644 Binary files a/doc/LectureNotes/_build/jupyter_execute/chapter1_3_0.png and b/doc/LectureNotes/_build/jupyter_execute/chapter1_3_0.png differ diff --git a/doc/LectureNotes/_build/jupyter_execute/chapter1_61_13.png b/doc/LectureNotes/_build/jupyter_execute/chapter1_61_13.png index cb4a7d351..49ab6f13d 100644 Binary files a/doc/LectureNotes/_build/jupyter_execute/chapter1_61_13.png and b/doc/LectureNotes/_build/jupyter_execute/chapter1_61_13.png differ diff --git a/doc/LectureNotes/chapter1.ipynb b/doc/LectureNotes/chapter1.ipynb index 9dab26cdc..d2273f8f7 100644 --- a/doc/LectureNotes/chapter1.ipynb +++ b/doc/LectureNotes/chapter1.ipynb @@ -3411,16 +3411,13 @@ "TrainError = np.zeros(maxdegree)\n", "polydegree = np.zeros(maxdegree)\n", "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)\n", - "scaler = StandardScaler()\n", - "scaler.fit(x_train)\n", - "x_train_scaled = scaler.transform(x_train)\n", - "x_test_scaled = scaler.transform(x_test)\n", + "\n", "\n", "for degree in range(maxdegree):\n", " model = make_pipeline(PolynomialFeatures(degree=degree), LinearRegression(fit_intercept=False))\n", - " clf = model.fit(x_train_scaled,y_train)\n", - " y_fit = clf.predict(x_train_scaled)\n", - " y_pred = clf.predict(x_test_scaled) \n", + " clf = model.fit(x_train,y_train)\n", + " y_fit = clf.predict(x_train)\n", + " y_pred = clf.predict(x_test) \n", " polydegree[degree] = degree\n", " TestError[degree] = np.mean( np.mean((y_test - y_pred)**2) )\n", " TrainError[degree] = np.mean( np.mean((y_train - y_fit)**2) )\n", diff --git a/doc/pub/week42/html/._week42-bs000.html b/doc/pub/week42/html/._week42-bs000.html index d836f3987..cbef1a23a 100644 --- a/doc/pub/week42/html/._week42-bs000.html +++ b/doc/pub/week42/html/._week42-bs000.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -386,7 +400,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Oct 20, 2021

    +

    Oct 21, 2021


    @@ -410,7 +424,7 @@ MathJax.Hub.Config({

  • 9
  • 10
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs001.html b/doc/pub/week42/html/._week42-bs001.html index 6b5cf1166..114bc3739 100644 --- a/doc/pub/week42/html/._week42-bs001.html +++ b/doc/pub/week42/html/._week42-bs001.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -419,7 +433,7 @@ MathJax.Hub.Config({
  • 10
  • 11
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs002.html b/doc/pub/week42/html/._week42-bs002.html index adb90d7e3..541095256 100644 --- a/doc/pub/week42/html/._week42-bs002.html +++ b/doc/pub/week42/html/._week42-bs002.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -391,7 +405,7 @@ we will also study the usage of 11
  • 12
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs003.html b/doc/pub/week42/html/._week42-bs003.html index 736b8e062..dc7f4212c 100644 --- a/doc/pub/week42/html/._week42-bs003.html +++ b/doc/pub/week42/html/._week42-bs003.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -408,7 +422,7 @@ and output layer to any given precision.
  • 12
  • 13
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs004.html b/doc/pub/week42/html/._week42-bs004.html index 72a59fbf2..92d65523f 100644 --- a/doc/pub/week42/html/._week42-bs004.html +++ b/doc/pub/week42/html/._week42-bs004.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -411,7 +425,7 @@ for the solution to be unique.
  • 13
  • 14
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs005.html b/doc/pub/week42/html/._week42-bs005.html index 849c19ea5..3158ec573 100644 --- a/doc/pub/week42/html/._week42-bs005.html +++ b/doc/pub/week42/html/._week42-bs005.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -416,7 +430,7 @@ As described previously, an optimization method could be used to minimize the pa
  • 14
  • 15
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs006.html b/doc/pub/week42/html/._week42-bs006.html index 22d2f9d49..28822d027 100644 --- a/doc/pub/week42/html/._week42-bs006.html +++ b/doc/pub/week42/html/._week42-bs006.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -418,7 +432,7 @@ The neural net should then find the parameters \( P \) that minimizes the cost f
  • 15
  • 16
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs007.html b/doc/pub/week42/html/._week42-bs007.html index ecdd75585..d89802fd6 100644 --- a/doc/pub/week42/html/._week42-bs007.html +++ b/doc/pub/week42/html/._week42-bs007.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -400,7 +414,7 @@ Automatic differentiation is a method of finding the derivatives numerically wit
  • 16
  • 17
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs008.html b/doc/pub/week42/html/._week42-bs008.html index 1dfcfff2c..5e5562f23 100644 --- a/doc/pub/week42/html/._week42-bs008.html +++ b/doc/pub/week42/html/._week42-bs008.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -418,7 +432,7 @@ Having an analytical solution at hand, it is possible to use it to compare how w
  • 17
  • 18
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs009.html b/doc/pub/week42/html/._week42-bs009.html index d61f6ebe0..47e7f704a 100644 --- a/doc/pub/week42/html/._week42-bs009.html +++ b/doc/pub/week42/html/._week42-bs009.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -409,7 +423,7 @@ In this example, \( \gamma = 2 \) and \( g_0 = 10 \).
  • 18
  • 19
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs010.html b/doc/pub/week42/html/._week42-bs010.html index 819950858..0e1ed0f8e 100644 --- a/doc/pub/week42/html/._week42-bs010.html +++ b/doc/pub/week42/html/._week42-bs010.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -403,7 +417,7 @@ with \( h_1(x) \) ensuring that \( g_t(x) \) satisfies some conditions and \( h_
  • 19
  • 20
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs011.html b/doc/pub/week42/html/._week42-bs011.html index 57659d870..db4c0b075 100644 --- a/doc/pub/week42/html/._week42-bs011.html +++ b/doc/pub/week42/html/._week42-bs011.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -415,7 +429,7 @@ $$
  • 20
  • 21
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs012.html b/doc/pub/week42/html/._week42-bs012.html index 1b1fa9e4c..5eebd5097 100644 --- a/doc/pub/week42/html/._week42-bs012.html +++ b/doc/pub/week42/html/._week42-bs012.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -424,7 +438,7 @@ is fulfilled as best as possible.
  • 21
  • 22
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs013.html b/doc/pub/week42/html/._week42-bs013.html index 91aa9eec4..62de6019e 100644 --- a/doc/pub/week42/html/._week42-bs013.html +++ b/doc/pub/week42/html/._week42-bs013.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -420,7 +434,7 @@ for an input value \( x \).
  • 22
  • 23
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs014.html b/doc/pub/week42/html/._week42-bs014.html index dc8704f7a..c8cffe1e2 100644 --- a/doc/pub/week42/html/._week42-bs014.html +++ b/doc/pub/week42/html/._week42-bs014.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -418,7 +432,7 @@ $$
  • 23
  • 24
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs015.html b/doc/pub/week42/html/._week42-bs015.html index 57a841ecf..dcad8812e 100644 --- a/doc/pub/week42/html/._week42-bs015.html +++ b/doc/pub/week42/html/._week42-bs015.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -403,7 +417,7 @@ The input layer will consist of \( N_{\text{input} } \) neurons, passing its ele
  • 24
  • 25
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs016.html b/doc/pub/week42/html/._week42-bs016.html index a8e7a530d..d56208013 100644 --- a/doc/pub/week42/html/._week42-bs016.html +++ b/doc/pub/week42/html/._week42-bs016.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -412,7 +426,7 @@ $$
  • 25
  • 26
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs017.html b/doc/pub/week42/html/._week42-bs017.html index 1bca0dab2..b770e5d47 100644 --- a/doc/pub/week42/html/._week42-bs017.html +++ b/doc/pub/week42/html/._week42-bs017.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -413,7 +427,7 @@ $$
  • 26
  • 27
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs018.html b/doc/pub/week42/html/._week42-bs018.html index 89053614f..b16c86f2a 100644 --- a/doc/pub/week42/html/._week42-bs018.html +++ b/doc/pub/week42/html/._week42-bs018.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -428,7 +442,7 @@ it is assumes that the number of neurons in the output layer is one.
  • 27
  • 28
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs019.html b/doc/pub/week42/html/._week42-bs019.html index 68256d1ef..36913c414 100644 --- a/doc/pub/week42/html/._week42-bs019.html +++ b/doc/pub/week42/html/._week42-bs019.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -411,7 +425,7 @@ $$
  • 28
  • 29
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs020.html b/doc/pub/week42/html/._week42-bs020.html index 31cd5cb96..b67affdde 100644 --- a/doc/pub/week42/html/._week42-bs020.html +++ b/doc/pub/week42/html/._week42-bs020.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -412,7 +426,7 @@ In this case we seek a continuous range of values since we are approximating a f
  • 29
  • 30
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs021.html b/doc/pub/week42/html/._week42-bs021.html index 8b7e4e320..145c04b4a 100644 --- a/doc/pub/week42/html/._week42-bs021.html +++ b/doc/pub/week42/html/._week42-bs021.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -411,7 +425,7 @@ Here, gradient descent with a constant step size has been chosen.
  • 30
  • 31
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs022.html b/doc/pub/week42/html/._week42-bs022.html index 38608ef8d..358d76e3c 100644 --- a/doc/pub/week42/html/._week42-bs022.html +++ b/doc/pub/week42/html/._week42-bs022.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -433,7 +447,7 @@ $$
  • 31
  • 32
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs023.html b/doc/pub/week42/html/._week42-bs023.html index 23a977b9c..2bb8c7c0d 100644 --- a/doc/pub/week42/html/._week42-bs023.html +++ b/doc/pub/week42/html/._week42-bs023.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -543,7 +557,7 @@ MathJax.Hub.Config({
  • 32
  • 33
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs024.html b/doc/pub/week42/html/._week42-bs024.html index aa491419e..c4922abb5 100644 --- a/doc/pub/week42/html/._week42-bs024.html +++ b/doc/pub/week42/html/._week42-bs024.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -563,7 +577,7 @@ The number of neurons within each hidden layer are given as a list of integers i
  • 33
  • 34
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs025.html b/doc/pub/week42/html/._week42-bs025.html index 0d35b2101..bdeea7b05 100644 --- a/doc/pub/week42/html/._week42-bs025.html +++ b/doc/pub/week42/html/._week42-bs025.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -415,7 +429,7 @@ Here, we stay with a more simple approach and implement for comparison, the simp
  • 34
  • 35
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs026.html b/doc/pub/week42/html/._week42-bs026.html index 2f9a16bff..ee6ea7225 100644 --- a/doc/pub/week42/html/._week42-bs026.html +++ b/doc/pub/week42/html/._week42-bs026.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -411,7 +425,7 @@ In this example, we let \( \alpha = 2 \), \( A = 1 \), and \( g_0 = 1.2 \).
  • 35
  • 36
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs027.html b/doc/pub/week42/html/._week42-bs027.html index 51a25b4db..57ecb7d72 100644 --- a/doc/pub/week42/html/._week42-bs027.html +++ b/doc/pub/week42/html/._week42-bs027.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -416,7 +430,7 @@ $$
  • 36
  • 37
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs028.html b/doc/pub/week42/html/._week42-bs028.html index 7450e5623..c61d9aeff 100644 --- a/doc/pub/week42/html/._week42-bs028.html +++ b/doc/pub/week42/html/._week42-bs028.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -565,7 +579,7 @@ The network will be the similar as for the exponential decay example, but with s
  • 37
  • 38
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs029.html b/doc/pub/week42/html/._week42-bs029.html index cab10f322..f26d78b32 100644 --- a/doc/pub/week42/html/._week42-bs029.html +++ b/doc/pub/week42/html/._week42-bs029.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -519,7 +533,7 @@ extending the program that uses the network using Autograd:
  • 38
  • 39
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs030.html b/doc/pub/week42/html/._week42-bs030.html index bfa68bff7..308fbb861 100644 --- a/doc/pub/week42/html/._week42-bs030.html +++ b/doc/pub/week42/html/._week42-bs030.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -421,7 +435,7 @@ In addition, it could be interesting to see how a typical method for numerically
  • 39
  • 40
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs031.html b/doc/pub/week42/html/._week42-bs031.html index 28043a4c8..89ec009ca 100644 --- a/doc/pub/week42/html/._week42-bs031.html +++ b/doc/pub/week42/html/._week42-bs031.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -428,7 +442,7 @@ $$
  • 40
  • 41
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs032.html b/doc/pub/week42/html/._week42-bs032.html index 1cfbb4412..20987bc82 100644 --- a/doc/pub/week42/html/._week42-bs032.html +++ b/doc/pub/week42/html/._week42-bs032.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -549,7 +563,7 @@ MathJax.Hub.Config({
  • 41
  • 42
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs033.html b/doc/pub/week42/html/._week42-bs033.html index 06fa1b87e..721c309f8 100644 --- a/doc/pub/week42/html/._week42-bs033.html +++ b/doc/pub/week42/html/._week42-bs033.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -488,7 +502,7 @@ which makes it possible to solve for the vector \( \boldsymbol{g} \).
  • 42
  • 43
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs034.html b/doc/pub/week42/html/._week42-bs034.html index cbb761dc8..62ee97617 100644 --- a/doc/pub/week42/html/._week42-bs034.html +++ b/doc/pub/week42/html/._week42-bs034.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -592,7 +606,7 @@ We can then compare the result from this numerical scheme with the output from o
  • 43
  • 44
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs035.html b/doc/pub/week42/html/._week42-bs035.html index 507cfa53d..50e0d85c9 100644 --- a/doc/pub/week42/html/._week42-bs035.html +++ b/doc/pub/week42/html/._week42-bs035.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -413,7 +427,7 @@ where \( f \) is an expression involving all kinds of possible mixed derivatives
  • 44
  • 45
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs036.html b/doc/pub/week42/html/._week42-bs036.html index 251e92dd9..33e9673b8 100644 --- a/doc/pub/week42/html/._week42-bs036.html +++ b/doc/pub/week42/html/._week42-bs036.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -413,7 +427,7 @@ The role of the function \( h_2(x_1,\dots,x_N,N(x_1,\dots,x_N,P)) \), is to ensu
  • 45
  • 46
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs037.html b/doc/pub/week42/html/._week42-bs037.html index 832b00ada..38f99f949 100644 --- a/doc/pub/week42/html/._week42-bs037.html +++ b/doc/pub/week42/html/._week42-bs037.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -413,7 +427,7 @@ $$
  • 46
  • 47
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs038.html b/doc/pub/week42/html/._week42-bs038.html index 4d67376ae..7f325a6f7 100644 --- a/doc/pub/week42/html/._week42-bs038.html +++ b/doc/pub/week42/html/._week42-bs038.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -409,7 +423,7 @@ $$
  • 47
  • 48
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs039.html b/doc/pub/week42/html/._week42-bs039.html index ef2217815..ed3b5cac7 100644 --- a/doc/pub/week42/html/._week42-bs039.html +++ b/doc/pub/week42/html/._week42-bs039.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -415,7 +429,7 @@ with \( u(x) \) being some given function.
  • 48
  • 49
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs040.html b/doc/pub/week42/html/._week42-bs040.html index 1de5b9aa6..b9e9ae624 100644 --- a/doc/pub/week42/html/._week42-bs040.html +++ b/doc/pub/week42/html/._week42-bs040.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -422,7 +436,7 @@ First, we will look into how Autograd could be used in a network tailored to sol
  • 49
  • 50
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs041.html b/doc/pub/week42/html/._week42-bs041.html index 1c46d4057..16ea3ed35 100644 --- a/doc/pub/week42/html/._week42-bs041.html +++ b/doc/pub/week42/html/._week42-bs041.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -452,7 +466,7 @@ network at each possible pair \( (x,t) \), given an array for the desired
  • 50
  • 51
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs042.html b/doc/pub/week42/html/._week42-bs042.html index 64db9f808..9088ae409 100644 --- a/doc/pub/week42/html/._week42-bs042.html +++ b/doc/pub/week42/html/._week42-bs042.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -419,7 +433,7 @@ since \( (0) = u(1) = 0 \) and \( u(x) = \sin(\pi x) \).
  • 51
  • 52
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs043.html b/doc/pub/week42/html/._week42-bs043.html index 26ac6cfd9..6e30681d3 100644 --- a/doc/pub/week42/html/._week42-bs043.html +++ b/doc/pub/week42/html/._week42-bs043.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -457,7 +471,7 @@ mixed derivatives of \( g(x,t) \).
  • 52
  • 53
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs044.html b/doc/pub/week42/html/._week42-bs044.html index 63fe51927..746d20cf7 100644 --- a/doc/pub/week42/html/._week42-bs044.html +++ b/doc/pub/week42/html/._week42-bs044.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -641,7 +655,7 @@ Using TensorFlow results in a much better execution time. Try it!
  • 53
  • 54
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs045.html b/doc/pub/week42/html/._week42-bs045.html index b0c8b4810..a01d76ba7 100644 --- a/doc/pub/week42/html/._week42-bs045.html +++ b/doc/pub/week42/html/._week42-bs045.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -419,7 +433,7 @@ where \( \frac{\partial g(x,t)}{\partial t} \Big |_{t = 0} \) means the derivati
  • 54
  • 55
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs046.html b/doc/pub/week42/html/._week42-bs046.html index 7028af6e7..947f910bc 100644 --- a/doc/pub/week42/html/._week42-bs046.html +++ b/doc/pub/week42/html/._week42-bs046.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -420,7 +434,7 @@ In this example, let \( c = 1 \) and \( u(x) = \sin(\pi x) \) and \( v(x) = -\pi
  • 55
  • 56
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs047.html b/doc/pub/week42/html/._week42-bs047.html index c2dc521fc..fbcbf1419 100644 --- a/doc/pub/week42/html/._week42-bs047.html +++ b/doc/pub/week42/html/._week42-bs047.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -414,7 +428,7 @@ Note that this trial solution satisfies the conditions only if \( u(0) = v(0) =
  • 56
  • 57
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs048.html b/doc/pub/week42/html/._week42-bs048.html index df1bdba67..06766f951 100644 --- a/doc/pub/week42/html/._week42-bs048.html +++ b/doc/pub/week42/html/._week42-bs048.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -402,7 +416,7 @@ $$
  • 57
  • 58
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs049.html b/doc/pub/week42/html/._week42-bs049.html index 786b57a9f..703f34ef3 100644 --- a/doc/pub/week42/html/._week42-bs049.html +++ b/doc/pub/week42/html/._week42-bs049.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -619,7 +633,7 @@ MathJax.Hub.Config({
  • 58
  • 59
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs050.html b/doc/pub/week42/html/._week42-bs050.html index 71ff8ed29..2e8ae2ee9 100644 --- a/doc/pub/week42/html/._week42-bs050.html +++ b/doc/pub/week42/html/._week42-bs050.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -401,7 +415,7 @@ MathJax.Hub.Config({
  • 59
  • 60
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs051.html b/doc/pub/week42/html/._week42-bs051.html index eaecaa6c0..6adb3f2c8 100644 --- a/doc/pub/week42/html/._week42-bs051.html +++ b/doc/pub/week42/html/._week42-bs051.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -429,7 +443,7 @@ Another good read is the article here 60
  • 61
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs052.html b/doc/pub/week42/html/._week42-bs052.html index bbf7e558a..eb05abcaa 100644 --- a/doc/pub/week42/html/._week42-bs052.html +++ b/doc/pub/week42/html/._week42-bs052.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -404,7 +418,7 @@ before the transformation.
  • 61
  • 62
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs053.html b/doc/pub/week42/html/._week42-bs053.html index badd1e515..21ab949db 100644 --- a/doc/pub/week42/html/._week42-bs053.html +++ b/doc/pub/week42/html/._week42-bs053.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -418,7 +432,7 @@ in the input).
  • 62
  • 63
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs054.html b/doc/pub/week42/html/._week42-bs054.html index d0c2972f9..20dbf54f9 100644 --- a/doc/pub/week42/html/._week42-bs054.html +++ b/doc/pub/week42/html/._week42-bs054.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -418,7 +432,7 @@ would quickly lead to possible overfitting.
  • 63
  • 64
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs055.html b/doc/pub/week42/html/._week42-bs055.html index 37b126799..660ddab75 100644 --- a/doc/pub/week42/html/._week42-bs055.html +++ b/doc/pub/week42/html/._week42-bs055.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -430,7 +444,7 @@ dimension.
  • 64
  • 65
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs056.html b/doc/pub/week42/html/._week42-bs056.html index d4b0d36c3..a87e28613 100644 --- a/doc/pub/week42/html/._week42-bs056.html +++ b/doc/pub/week42/html/._week42-bs056.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -413,7 +427,7 @@ A simple CNN for image classification could have the architecture:
  • 65
  • 66
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs057.html b/doc/pub/week42/html/._week42-bs057.html index ceca9f7f2..c42f64393 100644 --- a/doc/pub/week42/html/._week42-bs057.html +++ b/doc/pub/week42/html/._week42-bs057.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -409,7 +423,7 @@ are consistent with the labels in the training set for each image.
  • 66
  • 67
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs058.html b/doc/pub/week42/html/._week42-bs058.html index 89b2ce73c..2633fe27a 100644 --- a/doc/pub/week42/html/._week42-bs058.html +++ b/doc/pub/week42/html/._week42-bs058.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -411,7 +425,7 @@ and the slides of 67
  • 68
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs059.html b/doc/pub/week42/html/._week42-bs059.html index 539716f0c..e949475d4 100644 --- a/doc/pub/week42/html/._week42-bs059.html +++ b/doc/pub/week42/html/._week42-bs059.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -429,7 +443,7 @@ How can we use this? And what does it mean? Let us study some familiar examples
  • 68
  • 69
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs060.html b/doc/pub/week42/html/._week42-bs060.html index a05956e0b..301b1ada8 100644 --- a/doc/pub/week42/html/._week42-bs060.html +++ b/doc/pub/week42/html/._week42-bs060.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -399,7 +413,7 @@ Let us remind of this and recast it in terms of the mathematical operation of co
  • 69
  • 70
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs061.html b/doc/pub/week42/html/._week42-bs061.html index a3b57b303..39a1511d8 100644 --- a/doc/pub/week42/html/._week42-bs061.html +++ b/doc/pub/week42/html/._week42-bs061.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -395,7 +409,7 @@ MathJax.Hub.Config({
  • 70
  • 71
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs062.html b/doc/pub/week42/html/._week42-bs062.html index f9461869d..b826c1a4a 100644 --- a/doc/pub/week42/html/._week42-bs062.html +++ b/doc/pub/week42/html/._week42-bs062.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -369,10 +383,18 @@ MathJax.Hub.Config({

    Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)

    +

    +For problems with so-called harmonic oscillations, given by for example the following differential equation +$$ +m\frac{d^2x(t)}(dt^2}+\eta\frac{dx}{dt}+x(t)=F(t), +$$ + +where \( F(t) \) is an applied external force acting on the system (often called a driving force), one can use the theory of Fourier transformations to find the solutions of this type of equations. +

    If one has several driving forces, \( F(t)=\sum_n F_n(t) \), one can find the particular solution to each \( F_n \), \( x_{pn}(t) \), and the particular -solution for the entire driving force is +solution for the entire driving force is then given by a series like $$ \begin{equation} @@ -381,163 +403,6 @@ x_p(t)=\sum_nx_{pn}(t). \end{equation} $$ -

    -This is known as the principal of superposition. It only applies when -the homogenous equation is linear. If there were an anharmonic term -such as \( x^3 \) in the homogenous equation, then when one summed various -solutions, \( x=(\sum_n x_n)^2 \), one would get cross -terms. Superposition is especially useful when \( F(t) \) can be written -as a sum of sinusoidal terms, because the solutions for each -sinusoidal (sine or cosine) term is analytic, as we saw above. - -

    -Driving forces are often periodic, even when they are not -sinusoidal. Periodicity implies that for some time \( \tau \) - -$$ -\begin{eqnarray} -F(t+\tau)=F(t). -\end{eqnarray} -$$ - -

    -One example of a non-sinusoidal periodic force is a square wave. Many -components in electric circuits are non-linear, e.g. diodes, which -makes many wave forms non-sinusoidal even when the circuits are being -driven by purely sinusoidal sources. - -

    -The code here shows a typical example of such a square wave generated using the functionality included in the scipy Python package. We have used a period of \( \tau=0.2 \). - -

    - - -

    import numpy as np
    -import math
    -from scipy import signal
    -import matplotlib.pyplot as plt
    -
    -# number of points                                                                                       
    -n = 500
    -# start and final times                                                                                  
    -t0 = 0.0
    -tn = 1.0
    -# Period                                                                                                 
    -t = np.linspace(t0, tn, n, endpoint=False)
    -SqrSignal = np.zeros(n)
    -SqrSignal = 1.0+signal.square(2*np.pi*5*t)
    -plt.plot(t, SqrSignal)
    -plt.ylim(-0.5, 2.5)
    -plt.show()
    -
    -

    -For the sinusoidal example the -period is \( \tau=2\pi/\omega \). However, higher harmonics can also -satisfy the periodicity requirement. In general, any force that -satisfies the periodicity requirement can be expressed as a sum over -harmonics, - -$$ -\begin{equation} -F(t)=\frac{f_0}{2}+\sum_{n>0} f_n\cos(2n\pi t/\tau)+g_n\sin(2n\pi t/\tau). -\tag{22} -\end{equation} -$$ - -

    -We can write down the answer for -\( x_{pn}(t) \), by substituting \( f_n/m \) or \( g_n/m \) for \( F_0/m \). By -writing each factor \( 2n\pi t/\tau \) as \( n\omega t \), with \( \omega\equiv -2\pi/\tau \), - -$$ -\begin{equation} -\tag{23} -F(t)=\frac{f_0}{2}+\sum_{n>0}f_n\cos(n\omega t)+g_n\sin(n\omega t). -\end{equation} -$$ - -

    -The solutions for \( x(t) \) then come from replacing \( \omega \) with -\( n\omega \) for each term in the particular solution, - -$$ -\begin{eqnarray} -x_p(t)&=&\frac{f_0}{2k}+\sum_{n>0} \alpha_n\cos(n\omega t-\delta_n)+\beta_n\sin(n\omega t-\delta_n),\\ -\nonumber -\alpha_n&=&\frac{f_n/m}{\sqrt{((n\omega)^2-\omega_0^2)+4\beta^2n^2\omega^2}},\\ -\nonumber -\beta_n&=&\frac{g_n/m}{\sqrt{((n\omega)^2-\omega_0^2)+4\beta^2n^2\omega^2}},\\ -\nonumber -\delta_n&=&\tan^{-1}\left(\frac{2\beta n\omega}{\omega_0^2-n^2\omega^2}\right). -\end{eqnarray} -$$ - -

    -Because the forces have been applied for a long time, any non-zero -damping eliminates the homogenous parts of the solution, so one need -only consider the particular solution for each \( n \). - -

    -The problem will considered solved if one can find expressions for the -coefficients \( f_n \) and \( g_n \), even though the solutions are expressed -as an infinite sum. The coefficients can be extracted from the -function \( F(t) \) by - -$$ -\begin{eqnarray} -\tag{24} -f_n&=&\frac{2}{\tau}\int_{-\tau/2}^{\tau/2} dt~F(t)\cos(2n\pi t/\tau),\\ -\nonumber -g_n&=&\frac{2}{\tau}\int_{-\tau/2}^{\tau/2} dt~F(t)\sin(2n\pi t/\tau). -\end{eqnarray} -$$ - -

    -To check the consistency of these expressions and to verify -Eq. (24), one can insert the expansion of \( F(t) \) in -Eq. (23) into the expression for the coefficients in -Eq. (24) and see whether - -$$ -\begin{eqnarray} -f_n&=?&\frac{2}{\tau}\int_{-\tau/2}^{\tau/2} dt~\left\{ -\frac{f_0}{2}+\sum_{m>0}f_m\cos(m\omega t)+g_m\sin(m\omega t) -\right\}\cos(n\omega t). -\end{eqnarray} -$$ - -

    -Immediately, one can throw away all the terms with \( g_m \) because they -convolute an even and an odd function. The term with \( f_0/2 \) -disappears because \( \cos(n\omega t) \) is equally positive and negative -over the interval and will integrate to zero. For all the terms -\( f_m\cos(m\omega t) \) appearing in the sum, one can use angle addition -formulas to see that \( \cos(m\omega t)\cos(n\omega -t)=(1/2)(\cos[(m+n)\omega t]+\cos[(m-n)\omega t] \). This will integrate -to zero unless \( m=n \). In that case the \( m=n \) term gives - -$$ -\begin{equation} -\int_{-\tau/2}^{\tau/2}dt~\cos^2(m\omega t)=\frac{\tau}{2}, -\tag{25} -\end{equation} -$$ - -

    -and - -$$ -\begin{eqnarray} -f_n&=?&\frac{2}{\tau}\int_{-\tau/2}^{\tau/2} dt~f_n/2\\ -\nonumber -&=&f_n~\checkmark. -\end{eqnarray} -$$ - -

    -The same method can be used to check for the consistency of \( g_n \). -

    @@ -564,7 +429,7 @@ The same method can be used to check for the consistency of \( g_n \).

  • 71
  • 72
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs063.html b/doc/pub/week42/html/._week42-bs063.html index 332aeb540..b86b86e53 100644 --- a/doc/pub/week42/html/._week42-bs063.html +++ b/doc/pub/week42/html/._week42-bs063.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -367,18 +381,32 @@ MathJax.Hub.Config({ -

    CNNs in more detail, building convolutional neural networks in Tensorflow and Keras

    +

    Principle of Superposition

    -As discussed above, CNNs are neural networks built from the assumption that the inputs -to the network are 2D images. This is important because the number of features or pixels in images -grows very fast with the image size, and an enormous number of weights and biases are needed in order to build an accurate network. +This is known as the principle of superposition. It only applies when +the homogenous equation is linear. If there were an anharmonic term +such as \( x^3 \) in the homogenous equation, then when one summed various +solutions, \( x=(\sum_n x_n)^2 \), one would get cross +terms. Superposition is especially useful when \( F(t) \) can be written +as a sum of sinusoidal terms, because the solutions for each +sinusoidal (sine or cosine) term is analytic.

    -As before, we still have our input, a hidden layer and an output. What's novel about convolutional networks -are the convolutional and pooling layers stacked in pairs between the input and the hidden layer. -In addition, the data is no longer represented as a 2D feature matrix, instead each input is a number of 2D -matrices, typically 1 for each color dimension (Red, Green, Blue). +Driving forces are often periodic, even when they are not +sinusoidal. Periodicity implies that for some time \( \tau \) + +$$ +\begin{eqnarray} +F(t+\tau)=F(t). +\end{eqnarray} +$$ + +

    +One example of a non-sinusoidal periodic force is a square wave. Many +components in electric circuits are non-linear, e.g. diodes, which +makes many wave forms non-sinusoidal even when the circuits are being +driven by purely sinusoidal sources.

    @@ -406,7 +434,7 @@ matrices, typically 1 for each color dimension (Red, Green, Blue).

  • 72
  • 73
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs064.html b/doc/pub/week42/html/._week42-bs064.html index 1b3079d7f..352aa8962 100644 --- a/doc/pub/week42/html/._week42-bs064.html +++ b/doc/pub/week42/html/._week42-bs064.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -367,13 +381,44 @@ MathJax.Hub.Config({ -

    Setting it up

    +

    Simple Code Example

    -It means that to represent the entire -dataset of images, we require a 4D matrix or tensor. This tensor has the dimensions: -$$ -(n_{inputs},\, n_{pixels, width},\, n_{pixels, height},\, depth) . +The code here shows a typical example of such a square wave generated using the functionality included in the scipy Python package. We have used a period of \( \tau=0.2 \). + +

    + + +

    import numpy as np
    +import math
    +from scipy import signal
    +import matplotlib.pyplot as plt
    +
    +# number of points                                                                                       
    +n = 500
    +# start and final times                                                                                  
    +t0 = 0.0
    +tn = 1.0
    +# Period                                                                                                 
    +t = np.linspace(t0, tn, n, endpoint=False)
    +SqrSignal = np.zeros(n)
    +SqrSignal = 1.0+signal.square(2*np.pi*5*t)
    +plt.plot(t, SqrSignal)
    +plt.ylim(-0.5, 2.5)
    +plt.show()
    +
    +

    +For the sinusoidal example the +period is \( \tau=2\pi/\omega \). However, higher harmonics can also +satisfy the periodicity requirement. In general, any force that +satisfies the periodicity requirement can be expressed as a sum over +harmonics, + +$$ +\begin{equation} +F(t)=\frac{f_0}{2}+\sum_{n>0} f_n\cos(2n\pi t/\tau)+g_n\sin(2n\pi t/\tau). +\tag{22} +\end{equation} $$

    @@ -402,7 +447,7 @@ $$

  • 73
  • 74
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs065.html b/doc/pub/week42/html/._week42-bs065.html index 8b920ef6f..025064c86 100644 --- a/doc/pub/week42/html/._week42-bs065.html +++ b/doc/pub/week42/html/._week42-bs065.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -367,20 +381,36 @@ MathJax.Hub.Config({ -

    The MNIST dataset again

    +

    Wrapping up Fourier transforms

    -The MNIST dataset consists of grayscale images with a pixel size of -\( 28\times 28 \), meaning we require \( 28 \times 28 = 724 \) weights to each -neuron in the first hidden layer. +We can write down the answer for +\( x_{pn}(t) \), by substituting \( f_n/m \) or \( g_n/m \) for \( F_0/m \). By +writing each factor \( 2n\pi t/\tau \) as \( n\omega t \), with \( \omega\equiv +2\pi/\tau \), + +$$ +\begin{equation} +\tag{23} +F(t)=\frac{f_0}{2}+\sum_{n>0}f_n\cos(n\omega t)+g_n\sin(n\omega t). +\end{equation} +$$

    -If we were to analyze images of size \( 128\times 128 \) we would require -\( 128 \times 128 = 16384 \) weights to each neuron. Even worse if we were -dealing with color images, as most images are, we have an image matrix -of size \( 128\times 128 \) for each color dimension (Red, Green, Blue), -meaning 3 times the number of weights \( = 49152 \) are required for every -single neuron in the first hidden layer. +The solutions for \( x(t) \) then come from replacing \( \omega \) with +\( n\omega \) for each term in the particular solution, + +$$ +\begin{eqnarray} +x_p(t)&=&\frac{f_0}{2k}+\sum_{n>0} \alpha_n\cos(n\omega t-\delta_n)+\beta_n\sin(n\omega t-\delta_n),\\ +\nonumber +\alpha_n&=&\frac{f_n/m}{\sqrt{((n\omega)^2-\omega_0^2)+4\beta^2n^2\omega^2}},\\ +\nonumber +\beta_n&=&\frac{g_n/m}{\sqrt{((n\omega)^2-\omega_0^2)+4\beta^2n^2\omega^2}},\\ +\nonumber +\delta_n&=&\tan^{-1}\left(\frac{2\beta n\omega}{\omega_0^2-n^2\omega^2}\right). +\end{eqnarray} +$$

    @@ -408,7 +438,7 @@ single neuron in the first hidden layer.

  • 74
  • 75
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs066.html b/doc/pub/week42/html/._week42-bs066.html index e1c0abda7..13365f352 100644 --- a/doc/pub/week42/html/._week42-bs066.html +++ b/doc/pub/week42/html/._week42-bs066.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -367,20 +381,72 @@ MathJax.Hub.Config({ -

    Strong correlations

    +

    Finding the Coefficients

    -Images typically have strong local correlations, meaning that a small -part of the image varies little from its neighboring regions. If for -example we have an image of a blue car, we can roughly assume that a -small blue part of the image is surrounded by other blue regions. +Because the forces have been applied for a long time, any non-zero +damping eliminates the homogenous parts of the solution, so one need +only consider the particular solution for each \( n \).

    -Therefore, instead of connecting every single pixel to a neuron in the -first hidden layer, as we have previously done with deep neural -networks, we can instead connect each neuron to a small part of the -image (in all 3 RGB depth dimensions). The size of each small area is -fixed, and known as a receptive. +The problem is considered solved if one can find expressions for the +coefficients \( f_n \) and \( g_n \), even though the solutions are expressed +as an infinite sum. The coefficients can be extracted from the +function \( F(t) \) by + +$$ +\begin{eqnarray} +\tag{24} +f_n&=&\frac{2}{\tau}\int_{-\tau/2}^{\tau/2} dt~F(t)\cos(2n\pi t/\tau),\\ +\nonumber +g_n&=&\frac{2}{\tau}\int_{-\tau/2}^{\tau/2} dt~F(t)\sin(2n\pi t/\tau). +\end{eqnarray} +$$ + +

    +To check the consistency of these expressions and to verify +Eq. (24), one can insert the expansion of \( F(t) \) in +Eq. (23) into the expression for the coefficients in +Eq. (24) and see whether + +$$ +\begin{eqnarray} +f_n&=?&\frac{2}{\tau}\int_{-\tau/2}^{\tau/2} dt~\left\{ +\frac{f_0}{2}+\sum_{m>0}f_m\cos(m\omega t)+g_m\sin(m\omega t) +\right\}\cos(n\omega t). +\end{eqnarray} +$$ + +

    +Immediately, one can throw away all the terms with \( g_m \) because they +convolute an even and an odd function. The term with \( f_0/2 \) +disappears because \( \cos(n\omega t) \) is equally positive and negative +over the interval and will integrate to zero. For all the terms +\( f_m\cos(m\omega t) \) appearing in the sum, one can use angle addition +formulas to see that \( \cos(m\omega t)\cos(n\omega +t)=(1/2)(\cos[(m+n)\omega t]+\cos[(m-n)\omega t] \). This will integrate +to zero unless \( m=n \). In that case the \( m=n \) term gives + +$$ +\begin{equation} +\int_{-\tau/2}^{\tau/2}dt~\cos^2(m\omega t)=\frac{\tau}{2}, +\tag{25} +\end{equation} +$$ + +

    +and + +$$ +\begin{eqnarray} +f_n&=?&\frac{2}{\tau}\int_{-\tau/2}^{\tau/2} dt~f_n/2\\ +\nonumber +&=&f_n~\checkmark. +\end{eqnarray} +$$ + +

    +The same method can be used to check for the consistency of \( g_n \).

    @@ -408,7 +474,7 @@ fixed, and known as a 75

  • 76
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs067.html b/doc/pub/week42/html/._week42-bs067.html index 4c18556fe..8c5861e99 100644 --- a/doc/pub/week42/html/._week42-bs067.html +++ b/doc/pub/week42/html/._week42-bs067.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -365,26 +379,20 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Layers of a CNN

    -The layers of a convolutional neural network arrange neurons in 3D: width, height and depth. -The input image is typically a square matrix of depth 3. +

    CNNs in more detail, building convolutional neural networks in Tensorflow and Keras

    -A convolution is performed on the image which outputs -a 3D volume of neurons. The weights to the input are arranged in a number of 2D matrices, known as filters. +As discussed above, CNNs are neural networks built from the assumption that the inputs +to the network are 2D images. This is important because the number of features or pixels in images +grows very fast with the image size, and an enormous number of weights and biases are needed in order to build an accurate network.

    -Each filter slides along the input image, taking the dot product -between each small part of the image and the filter, in all depth -dimensions. This is then passed through a non-linear function, -typically the Rectified Linear (ReLu) function, which serves as the -activation of the neurons in the first convolutional layer. This is -further passed through a pooling layer, which reduces the size of the -convolutional layer, e.g. by taking the maximum or average across some -small regions, and this serves as input to the next convolutional -layer. +As before, we still have our input, a hidden layer and an output. What's novel about convolutional networks +are the convolutional and pooling layers stacked in pairs between the input and the hidden layer. +In addition, the data is no longer represented as a 2D feature matrix, instead each input is a number of 2D +matrices, typically 1 for each color dimension (Red, Green, Blue).

    @@ -412,7 +420,7 @@ layer.

  • 76
  • 77
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs068.html b/doc/pub/week42/html/._week42-bs068.html index 4af7f5239..884e01b3e 100644 --- a/doc/pub/week42/html/._week42-bs068.html +++ b/doc/pub/week42/html/._week42-bs068.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -367,17 +381,14 @@ MathJax.Hub.Config({ -

    Systematic reduction

    +

    Setting it up

    -By systematically reducing the size of the input volume, through -convolution and pooling, the network should create representations of -small parts of the input, and then from them assemble representations -of larger areas. The final pooling layer is flattened to serve as -input to a hidden layer, such that each neuron in the final pooling -layer is connected to every single neuron in the hidden layer. This -then serves as input to the output layer, e.g. a softmax output for -classification. +It means that to represent the entire +dataset of images, we require a 4D matrix or tensor. This tensor has the dimensions: +$$ +(n_{inputs},\, n_{pixels, width},\, n_{pixels, height},\, depth) . +$$

    @@ -405,7 +416,7 @@ classification.

  • 77
  • 78
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs069.html b/doc/pub/week42/html/._week42-bs069.html index a6d31362f..ec3baf136 100644 --- a/doc/pub/week42/html/._week42-bs069.html +++ b/doc/pub/week42/html/._week42-bs069.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -367,51 +381,21 @@ MathJax.Hub.Config({ -

    Prerequisites: Collect and pre-process data

    +

    The MNIST dataset again

    +

    +The MNIST dataset consists of grayscale images with a pixel size of +\( 28\times 28 \), meaning we require \( 28 \times 28 = 724 \) weights to each +neuron in the first hidden layer. - -

    # import necessary packages
    -import numpy as np
    -import matplotlib.pyplot as plt
    -from sklearn import datasets
    +

    +If we were to analyze images of size \( 128\times 128 \) we would require +\( 128 \times 128 = 16384 \) weights to each neuron. Even worse if we were +dealing with color images, as most images are, we have an image matrix +of size \( 128\times 128 \) for each color dimension (Red, Green, Blue), +meaning 3 times the number of weights \( = 49152 \) are required for every +single neuron in the first hidden layer. - -# ensure the same random numbers appear every time -np.random.seed(0) - -# display images in notebook -%matplotlib inline -plt.rcParams['figure.figsize'] = (12,12) - - -# download MNIST dataset -digits = datasets.load_digits() - -# define inputs and labels -inputs = digits.images -labels = digits.target - -# RGB images have a depth of 3 -# our images are grayscale so they should have a depth of 1 -inputs = inputs[:,:,:,np.newaxis] - -print("inputs = (n_inputs, pixel_width, pixel_height, depth) = " + str(inputs.shape)) -print("labels = (n_inputs) = " + str(labels.shape)) - - -# choose some random images to display -n_inputs = len(inputs) -indices = np.arange(n_inputs) -random_indices = np.random.choice(indices, size=5) - -for i, image in enumerate(digits.images[random_indices]): - plt.subplot(1, 5, i+1) - plt.axis('off') - plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest') - plt.title("Label: %d" % digits.target[random_indices[i]]) -plt.show() -

    @@ -438,7 +422,7 @@ plt.show()

  • 78
  • 79
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs070.html b/doc/pub/week42/html/._week42-bs070.html index be0718ece..e38a96ffa 100644 --- a/doc/pub/week42/html/._week42-bs070.html +++ b/doc/pub/week42/html/._week42-bs070.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -367,33 +381,21 @@ MathJax.Hub.Config({ -

    Importing Keras and Tensorflow

    +

    Strong correlations

    +

    +Images typically have strong local correlations, meaning that a small +part of the image varies little from its neighboring regions. If for +example we have an image of a blue car, we can roughly assume that a +small blue part of the image is surrounded by other blue regions. - -

    from tensorflow.keras import datasets, layers, models
    -from tensorflow.keras.layers import Input
    -from tensorflow.keras.models import Sequential      #This allows appending layers to existing models
    -from tensorflow.keras.layers import Dense           #This allows defining the characteristics of a particular layer
    -from tensorflow.keras import optimizers             #This allows using whichever optimiser we want (sgd,adam,RMSprop)
    -from tensorflow.keras import regularizers           #This allows using whichever regularizer we want (l1,l2,l1_l2)
    -from tensorflow.keras.utils import to_categorical   #This allows using categorical cross entropy as the cost function
    -#from tensorflow.keras import Conv2D
    -#from tensorflow.keras import MaxPooling2D
    -#from tensorflow.keras import Flatten
    +

    +Therefore, instead of connecting every single pixel to a neuron in the +first hidden layer, as we have previously done with deep neural +networks, we can instead connect each neuron to a small part of the +image (in all 3 RGB depth dimensions). The size of each small area is +fixed, and known as a receptive. -from sklearn.model_selection import train_test_split - -# representation of labels -labels = to_categorical(labels) - -# split into train and test data -# one-liner from scikit-learn library -train_size = 0.8 -test_size = 1 - train_size -X_train, X_test, Y_train, Y_test = train_test_split(inputs, labels, train_size=train_size, - test_size=test_size) -

    @@ -419,6 +421,8 @@ X_train, X_test, Y_train, Y_test = train_tes

  • 78
  • 79
  • 80
  • +
  • ...
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs071.html b/doc/pub/week42/html/._week42-bs071.html index 9d354436a..5eca31447 100644 --- a/doc/pub/week42/html/._week42-bs071.html +++ b/doc/pub/week42/html/._week42-bs071.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -367,38 +381,25 @@ MathJax.Hub.Config({ -

    Running with Keras

    +

    Layers of a CNN

    +The layers of a convolutional neural network arrange neurons in 3D: width, height and depth. +The input image is typically a square matrix of depth 3.

    +A convolution is performed on the image which outputs +a 3D volume of neurons. The weights to the input are arranged in a number of 2D matrices, known as filters. - -

    def create_convolutional_neural_network_keras(input_shape, receptive_field,
    -                                              n_filters, n_neurons_connected, n_categories,
    -                                              eta, lmbd):
    -    model = Sequential()
    -    model.add(layers.Conv2D(n_filters, (receptive_field, receptive_field), input_shape=input_shape, padding='same',
    -              activation='relu', kernel_regularizer=regularizers.l2(lmbd)))
    -    model.add(layers.MaxPooling2D(pool_size=(2, 2)))
    -    model.add(layers.Flatten())
    -    model.add(layers.Dense(n_neurons_connected, activation='relu', kernel_regularizer=regularizers.l2(lmbd)))
    -    model.add(layers.Dense(n_categories, activation='softmax', kernel_regularizer=regularizers.l2(lmbd)))
    -    
    -    sgd = optimizers.SGD(lr=eta)
    -    model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
    -    
    -    return model
    +

    +Each filter slides along the input image, taking the dot product +between each small part of the image and the filter, in all depth +dimensions. This is then passed through a non-linear function, +typically the Rectified Linear (ReLu) function, which serves as the +activation of the neurons in the first convolutional layer. This is +further passed through a pooling layer, which reduces the size of the +convolutional layer, e.g. by taking the maximum or average across some +small regions, and this serves as input to the next convolutional +layer. -epochs = 100 -batch_size = 100 -input_shape = X_train.shape[1:4] -receptive_field = 3 -n_filters = 10 -n_neurons_connected = 50 -n_categories = 10 - -eta_vals = np.logspace(-5, 1, 7) -lmbd_vals = np.logspace(-5, 1, 7) -

    @@ -423,6 +424,9 @@ lmbd_vals = np.

  • 78
  • 79
  • 80
  • +
  • 81
  • +
  • ...
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs072.html b/doc/pub/week42/html/._week42-bs072.html index fc372eb30..b0eef899c 100644 --- a/doc/pub/week42/html/._week42-bs072.html +++ b/doc/pub/week42/html/._week42-bs072.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -367,28 +381,18 @@ MathJax.Hub.Config({ -

    Final part

    +

    Systematic reduction

    +By systematically reducing the size of the input volume, through +convolution and pooling, the network should create representations of +small parts of the input, and then from them assemble representations +of larger areas. The final pooling layer is flattened to serve as +input to a hidden layer, such that each neuron in the final pooling +layer is connected to every single neuron in the hidden layer. This +then serves as input to the output layer, e.g. a softmax output for +classification. - -

    CNN_keras = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
    -        
    -for i, eta in enumerate(eta_vals):
    -    for j, lmbd in enumerate(lmbd_vals):
    -        CNN = create_convolutional_neural_network_keras(input_shape, receptive_field,
    -                                              n_filters, n_neurons_connected, n_categories,
    -                                              eta, lmbd)
    -        CNN.fit(X_train, Y_train, epochs=epochs, batch_size=batch_size, verbose=0)
    -        scores = CNN.evaluate(X_test, Y_test)
    -        
    -        CNN_keras[i][j] = CNN
    -        
    -        print("Learning rate = ", eta)
    -        print("Lambda = ", lmbd)
    -        print("Test accuracy: %.3f" % scores[1])
    -        print()
    -

    @@ -412,6 +416,10 @@ MathJax.Hub.Config({

  • 78
  • 79
  • 80
  • +
  • 81
  • +
  • 82
  • +
  • ...
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs073.html b/doc/pub/week42/html/._week42-bs073.html index fe0670070..7c092099a 100644 --- a/doc/pub/week42/html/._week42-bs073.html +++ b/doc/pub/week42/html/._week42-bs073.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -367,40 +381,49 @@ MathJax.Hub.Config({ -

    Final visualization

    - +

    Prerequisites: Collect and pre-process data

    -

    # visual representation of grid search
    -# uses seaborn heatmap, could probably do this in matplotlib
    -import seaborn as sns
    +
    # import necessary packages
    +import numpy as np
    +import matplotlib.pyplot as plt
    +from sklearn import datasets
     
    -sns.set()
     
    -train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    -test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +# ensure the same random numbers appear every time
    +np.random.seed(0)
     
    -for i in range(len(eta_vals)):
    -    for j in range(len(lmbd_vals)):
    -        CNN = CNN_keras[i][j]
    +# display images in notebook
    +%matplotlib inline
    +plt.rcParams['figure.figsize'] = (12,12)
     
    -        train_accuracy[i][j] = CNN.evaluate(X_train, Y_train)[1]
    -        test_accuracy[i][j] = CNN.evaluate(X_test, Y_test)[1]
     
    -        
    -fig, ax = plt.subplots(figsize = (10, 10))
    -sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
    -ax.set_title("Training Accuracy")
    -ax.set_ylabel("$\eta$")
    -ax.set_xlabel("$\lambda$")
    -plt.show()
    +# download MNIST dataset
    +digits = datasets.load_digits()
     
    -fig, ax = plt.subplots(figsize = (10, 10))
    -sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
    -ax.set_title("Test Accuracy")
    -ax.set_ylabel("$\eta$")
    -ax.set_xlabel("$\lambda$")
    +# define inputs and labels
    +inputs = digits.images
    +labels = digits.target
    +
    +# RGB images have a depth of 3
    +# our images are grayscale so they should have a depth of 1
    +inputs = inputs[:,:,:,np.newaxis]
    +
    +print("inputs = (n_inputs, pixel_width, pixel_height, depth) = " + str(inputs.shape))
    +print("labels = (n_inputs) = " + str(labels.shape))
    +
    +
    +# choose some random images to display
    +n_inputs = len(inputs)
    +indices = np.arange(n_inputs)
    +random_indices = np.random.choice(indices, size=5)
    +
    +for i, image in enumerate(digits.images[random_indices]):
    +    plt.subplot(1, 5, i+1)
    +    plt.axis('off')
    +    plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
    +    plt.title("Label: %d" % digits.target[random_indices[i]])
     plt.show()
     

    @@ -425,6 +448,11 @@ plt.show()

  • 78
  • 79
  • 80
  • +
  • 81
  • +
  • 82
  • +
  • 83
  • +
  • ...
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs074.html b/doc/pub/week42/html/._week42-bs074.html index a9d7403fe..6cf8283cc 100644 --- a/doc/pub/week42/html/._week42-bs074.html +++ b/doc/pub/week42/html/._week42-bs074.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -367,27 +381,32 @@ MathJax.Hub.Config({ -

    The CIFAR01 data set

    - -

    -The CIFAR10 dataset contains 60,000 color images in 10 classes, with -6,000 images in each class. The dataset is divided into 50,000 -training images and 10,000 testing images. The classes are mutually -exclusive and there is no overlap between them. - +

    Importing Keras and Tensorflow

    -

    import tensorflow as tf
    +
    from tensorflow.keras import datasets, layers, models
    +from tensorflow.keras.layers import Input
    +from tensorflow.keras.models import Sequential      #This allows appending layers to existing models
    +from tensorflow.keras.layers import Dense           #This allows defining the characteristics of a particular layer
    +from tensorflow.keras import optimizers             #This allows using whichever optimiser we want (sgd,adam,RMSprop)
    +from tensorflow.keras import regularizers           #This allows using whichever regularizer we want (l1,l2,l1_l2)
    +from tensorflow.keras.utils import to_categorical   #This allows using categorical cross entropy as the cost function
    +#from tensorflow.keras import Conv2D
    +#from tensorflow.keras import MaxPooling2D
    +#from tensorflow.keras import Flatten
     
    -from tensorflow.keras import datasets, layers, models
    -import matplotlib.pyplot as plt
    +from sklearn.model_selection import train_test_split
     
    -# We import the data set
    -(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()
    +# representation of labels
    +labels = to_categorical(labels)
     
    -# Normalize pixel values to be between 0 and 1 by dividing by 255. 
    -train_images, test_images = train_images / 255.0, test_images / 255.0
    +# split into train and test data
    +# one-liner from scikit-learn library
    +train_size = 0.8
    +test_size = 1 - train_size
    +X_train, X_test, Y_train, Y_test = train_test_split(inputs, labels, train_size=train_size,
    +                                                    test_size=test_size)
     

    @@ -410,6 +429,10 @@ train_images, test_images = train_images 78

  • 79
  • 80
  • +
  • 81
  • +
  • 82
  • +
  • 83
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/._week42-bs075.html b/doc/pub/week42/html/._week42-bs075.html index 9f13cf2fb..27b559e79 100644 --- a/doc/pub/week42/html/._week42-bs075.html +++ b/doc/pub/week42/html/._week42-bs075.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -365,30 +379,39 @@ MathJax.Hub.Config({

     

     

     

    - + -

    Verifying the data set

    - -

    -To verify that the dataset looks correct, let's plot the first 25 images from the training set and display the class name below each image. +

    Running with Keras

    -

    class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer',
    -               'dog', 'frog', 'horse', 'ship', 'truck']
    -​
    -plt.figure(figsize=(10,10))
    -for i in range(25):
    -    plt.subplot(5,5,i+1)
    -    plt.xticks([])
    -    plt.yticks([])
    -    plt.grid(False)
    -    plt.imshow(train_images[i], cmap=plt.cm.binary)
    -    # The CIFAR labels happen to be arrays, 
    -    # which is why you need the extra index
    -    plt.xlabel(class_names[train_labels[i][0]])
    -plt.show()
    +
    def create_convolutional_neural_network_keras(input_shape, receptive_field,
    +                                              n_filters, n_neurons_connected, n_categories,
    +                                              eta, lmbd):
    +    model = Sequential()
    +    model.add(layers.Conv2D(n_filters, (receptive_field, receptive_field), input_shape=input_shape, padding='same',
    +              activation='relu', kernel_regularizer=regularizers.l2(lmbd)))
    +    model.add(layers.MaxPooling2D(pool_size=(2, 2)))
    +    model.add(layers.Flatten())
    +    model.add(layers.Dense(n_neurons_connected, activation='relu', kernel_regularizer=regularizers.l2(lmbd)))
    +    model.add(layers.Dense(n_categories, activation='softmax', kernel_regularizer=regularizers.l2(lmbd)))
    +    
    +    sgd = optimizers.SGD(lr=eta)
    +    model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
    +    
    +    return model
    +
    +epochs = 100
    +batch_size = 100
    +input_shape = X_train.shape[1:4]
    +receptive_field = 3
    +n_filters = 10
    +n_neurons_connected = 50
    +n_categories = 10
    +
    +eta_vals = np.logspace(-5, 1, 7)
    +lmbd_vals = np.logspace(-5, 1, 7)
     

    @@ -410,6 +433,10 @@ plt.show()

  • 78
  • 79
  • 80
  • +
  • 81
  • +
  • 82
  • +
  • 83
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/week42-bs.html b/doc/pub/week42/html/week42-bs.html index d836f3987..cbef1a23a 100644 --- a/doc/pub/week42/html/week42-bs.html +++ b/doc/pub/week42/html/week42-bs.html @@ -203,6 +203,16 @@ Automatically generated HTML file from DocOnce source 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -335,23 +345,27 @@ MathJax.Hub.Config({
  • Convolution Examples: Polynomial multiplication
  • Convolution Examples: Probability Theory
  • Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)
  • -
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • -
  • Setting it up
  • -
  • The MNIST dataset again
  • -
  • Strong correlations
  • -
  • Layers of a CNN
  • -
  • Systematic reduction
  • -
  • Prerequisites: Collect and pre-process data
  • -
  • Importing Keras and Tensorflow
  • -
  • Running with Keras
  • -
  • Final part
  • -
  • Final visualization
  • -
  • The CIFAR01 data set
  • -
  • Verifying the data set
  • -
  • Set up the model
  • -
  • Add Dense layers on top
  • -
  • Compile and train the model
  • -
  • Finally, evaluate the model
  • +
  • Principle of Superposition
  • +
  • Simple Code Example
  • +
  • Wrapping up Fourier transforms
  • +
  • Finding the Coefficients
  • +
  • CNNs in more detail, building convolutional neural networks in Tensorflow and Keras
  • +
  • Setting it up
  • +
  • The MNIST dataset again
  • +
  • Strong correlations
  • +
  • Layers of a CNN
  • +
  • Systematic reduction
  • +
  • Prerequisites: Collect and pre-process data
  • +
  • Importing Keras and Tensorflow
  • +
  • Running with Keras
  • +
  • Final part
  • +
  • Final visualization
  • +
  • The CIFAR01 data set
  • +
  • Verifying the data set
  • +
  • Set up the model
  • +
  • Add Dense layers on top
  • +
  • Compile and train the model
  • +
  • Finally, evaluate the model
  • @@ -386,7 +400,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Oct 20, 2021

    +

    Oct 21, 2021


    @@ -410,7 +424,7 @@ MathJax.Hub.Config({

  • 9
  • 10
  • ...
  • -
  • 80
  • +
  • 84
  • »
  • diff --git a/doc/pub/week42/html/week42-reveal.html b/doc/pub/week42/html/week42-reveal.html index 7dd4ffbf7..654c56dbe 100644 --- a/doc/pub/week42/html/week42-reveal.html +++ b/doc/pub/week42/html/week42-reveal.html @@ -148,7 +148,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

     
    -

    Oct 20, 2021

    +

    Oct 21, 2021


    @@ -3239,10 +3239,20 @@ Let us remind of this and recast it in terms of the mathematical operation of co

    Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)

    +

    +For problems with so-called harmonic oscillations, given by for example the following differential equation +

     
    +$$ +m\frac{d^2x(t)}(dt^2}+\eta\frac{dx}{dt}+x(t)=F(t), +$$ +

     
    + +where \( F(t) \) is an applied external force acting on the system (often called a driving force), one can use the theory of Fourier transformations to find the solutions of this type of equations. +

    If one has several driving forces, \( F(t)=\sum_n F_n(t) \), one can find the particular solution to each \( F_n \), \( x_{pn}(t) \), and the particular -solution for the entire driving force is +solution for the entire driving force is then given by a series like

     
    $$ @@ -3252,15 +3262,20 @@ x_p(t)=\sum_nx_{pn}(t). \end{equation} $$

     
    +

    + + +
    +

    Principle of Superposition

    -This is known as the principal of superposition. It only applies when +This is known as the principle of superposition. It only applies when the homogenous equation is linear. If there were an anharmonic term such as \( x^3 \) in the homogenous equation, then when one summed various solutions, \( x=(\sum_n x_n)^2 \), one would get cross terms. Superposition is especially useful when \( F(t) \) can be written as a sum of sinusoidal terms, because the solutions for each -sinusoidal (sine or cosine) term is analytic, as we saw above. +sinusoidal (sine or cosine) term is analytic.

    Driving forces are often periodic, even when they are not @@ -3279,6 +3294,11 @@ One example of a non-sinusoidal periodic force is a square wave. Many components in electric circuits are non-linear, e.g. diodes, which makes many wave forms non-sinusoidal even when the circuits are being driven by purely sinusoidal sources. +

    + + +
    +

    Simple Code Example

    The code here shows a typical example of such a square wave generated using the functionality included in the scipy Python package. We have used a period of \( \tau=0.2 \). @@ -3319,6 +3339,11 @@ F(t)=\frac{f_0}{2}+\sum_{n>0} f_n\cos(2n\pi t/\tau)+g_n\sin(2n\pi t/\tau). \end{equation} $$

     
    +

    + + +
    +

    Wrapping up Fourier transforms

    We can write down the answer for @@ -3352,6 +3377,11 @@ x_p(t)&=&\frac{f_0}{2k}+\sum_{n>0} \alpha_n\cos(n\omega t-\delta_n)+\beta_n\sin( \end{eqnarray} $$

     
    +

    + + +
    +

    Finding the Coefficients

    Because the forces have been applied for a long time, any non-zero @@ -3359,7 +3389,7 @@ damping eliminates the homogenous parts of the solution, so one need only consider the particular solution for each \( n \).

    -The problem will considered solved if one can find expressions for the +The problem is considered solved if one can find expressions for the coefficients \( f_n \) and \( g_n \), even though the solutions are expressed as an infinite sum. The coefficients can be extracted from the function \( F(t) \) by diff --git a/doc/pub/week42/html/week42-solarized.html b/doc/pub/week42/html/week42-solarized.html index 1c707d3b4..c1d5beee2 100644 --- a/doc/pub/week42/html/week42-solarized.html +++ b/doc/pub/week42/html/week42-solarized.html @@ -223,6 +223,16 @@ div { text-align: justify; text-justify: inter-word; } 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -297,7 +307,7 @@ MathJax.Hub.Config({

    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Oct 20, 2021

    +

    Oct 21, 2021












    @@ -3242,10 +3252,18 @@ Let us remind of this and recast it in terms of the mathematical operation of co

    Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)

    +

    +For problems with so-called harmonic oscillations, given by for example the following differential equation +$$ +m\frac{d^2x(t)}(dt^2}+\eta\frac{dx}{dt}+x(t)=F(t), +$$ + +where \( F(t) \) is an applied external force acting on the system (often called a driving force), one can use the theory of Fourier transformations to find the solutions of this type of equations. +

    If one has several driving forces, \( F(t)=\sum_n F_n(t) \), one can find the particular solution to each \( F_n \), \( x_{pn}(t) \), and the particular -solution for the entire driving force is +solution for the entire driving force is then given by a series like $$ \begin{equation} @@ -3255,13 +3273,18 @@ x_p(t)=\sum_nx_{pn}(t). $$

    -This is known as the principal of superposition. It only applies when +









    + +

    Principle of Superposition

    + +

    +This is known as the principle of superposition. It only applies when the homogenous equation is linear. If there were an anharmonic term such as \( x^3 \) in the homogenous equation, then when one summed various solutions, \( x=(\sum_n x_n)^2 \), one would get cross terms. Superposition is especially useful when \( F(t) \) can be written as a sum of sinusoidal terms, because the solutions for each -sinusoidal (sine or cosine) term is analytic, as we saw above. +sinusoidal (sine or cosine) term is analytic.

    Driving forces are often periodic, even when they are not @@ -3279,6 +3302,11 @@ components in electric circuits are non-linear, e.g. diodes, which makes many wave forms non-sinusoidal even when the circuits are being driven by purely sinusoidal sources. +

    +









    + +

    Simple Code Example

    +

    The code here shows a typical example of such a square wave generated using the functionality included in the scipy Python package. We have used a period of \( \tau=0.2 \). @@ -3317,6 +3345,11 @@ F(t)=\frac{f_0}{2}+\sum_{n>0} f_n\cos(2n\pi t/\tau)+g_n\sin(2n\pi t/\tau). \end{equation} $$ +

    +









    + +

    Wrapping up Fourier transforms

    +

    We can write down the answer for \( x_{pn}(t) \), by substituting \( f_n/m \) or \( g_n/m \) for \( F_0/m \). By @@ -3346,13 +3379,18 @@ x_p(t)&=&\frac{f_0}{2k}+\sum_{n>0} \alpha_n\cos(n\omega t-\delta_n)+\beta_n\sin( \end{eqnarray} $$ +

    +









    + +

    Finding the Coefficients

    +

    Because the forces have been applied for a long time, any non-zero damping eliminates the homogenous parts of the solution, so one need only consider the particular solution for each \( n \).

    -The problem will considered solved if one can find expressions for the +The problem is considered solved if one can find expressions for the coefficients \( f_n \) and \( g_n \), even though the solutions are expressed as an infinite sum. The coefficients can be extracted from the function \( F(t) \) by diff --git a/doc/pub/week42/html/week42.html b/doc/pub/week42/html/week42.html index 38205a2d2..b667683db 100644 --- a/doc/pub/week42/html/week42.html +++ b/doc/pub/week42/html/week42.html @@ -228,6 +228,16 @@ div { text-align: justify; text-justify: inter-word; } 2, None, 'convolution-examples-principle-of-superposition-and-periodic-forces-fourier-transforms'), + ('Principle of Superposition', + 2, + None, + 'principle-of-superposition'), + ('Simple Code Example', 2, None, 'simple-code-example'), + ('Wrapping up Fourier transforms', + 2, + None, + 'wrapping-up-fourier-transforms'), + ('Finding the Coefficients', 2, None, 'finding-the-coefficients'), ('CNNs in more detail, building convolutional neural networks in ' 'Tensorflow and Keras', 2, @@ -302,7 +312,7 @@ MathJax.Hub.Config({

    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Oct 20, 2021

    +

    Oct 21, 2021












    @@ -3247,10 +3257,18 @@ Let us remind of this and recast it in terms of the mathematical operation of co

    Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)

    +

    +For problems with so-called harmonic oscillations, given by for example the following differential equation +$$ +m\frac{d^2x(t)}(dt^2}+\eta\frac{dx}{dt}+x(t)=F(t), +$$ + +where \( F(t) \) is an applied external force acting on the system (often called a driving force), one can use the theory of Fourier transformations to find the solutions of this type of equations. +

    If one has several driving forces, \( F(t)=\sum_n F_n(t) \), one can find the particular solution to each \( F_n \), \( x_{pn}(t) \), and the particular -solution for the entire driving force is +solution for the entire driving force is then given by a series like $$ \begin{equation} @@ -3260,13 +3278,18 @@ x_p(t)=\sum_nx_{pn}(t). $$

    -This is known as the principal of superposition. It only applies when +









    + +

    Principle of Superposition

    + +

    +This is known as the principle of superposition. It only applies when the homogenous equation is linear. If there were an anharmonic term such as \( x^3 \) in the homogenous equation, then when one summed various solutions, \( x=(\sum_n x_n)^2 \), one would get cross terms. Superposition is especially useful when \( F(t) \) can be written as a sum of sinusoidal terms, because the solutions for each -sinusoidal (sine or cosine) term is analytic, as we saw above. +sinusoidal (sine or cosine) term is analytic.

    Driving forces are often periodic, even when they are not @@ -3284,6 +3307,11 @@ components in electric circuits are non-linear, e.g. diodes, which makes many wave forms non-sinusoidal even when the circuits are being driven by purely sinusoidal sources. +

    +









    + +

    Simple Code Example

    +

    The code here shows a typical example of such a square wave generated using the functionality included in the scipy Python package. We have used a period of \( \tau=0.2 \). @@ -3322,6 +3350,11 @@ F(t)=\frac{f_0}{2}+\sum_{n>0} f_n\cos(2n\pi t/\tau)+g_n\sin(2n\pi t/\tau). \end{equation} $$ +

    +









    + +

    Wrapping up Fourier transforms

    +

    We can write down the answer for \( x_{pn}(t) \), by substituting \( f_n/m \) or \( g_n/m \) for \( F_0/m \). By @@ -3351,13 +3384,18 @@ x_p(t)&=&\frac{f_0}{2k}+\sum_{n>0} \alpha_n\cos(n\omega t-\delta_n)+\beta_n\sin( \end{eqnarray} $$ +

    +









    + +

    Finding the Coefficients

    +

    Because the forces have been applied for a long time, any non-zero damping eliminates the homogenous parts of the solution, so one need only consider the particular solution for each \( n \).

    -The problem will considered solved if one can find expressions for the +The problem is considered solved if one can find expressions for the coefficients \( f_n \) and \( g_n \), even though the solutions are expressed as an infinite sum. The coefficients can be extracted from the function \( F(t) \) by diff --git a/doc/pub/week42/ipynb/ipynb-week42-src.tar.gz b/doc/pub/week42/ipynb/ipynb-week42-src.tar.gz index d0ff08389..e66275962 100644 Binary files a/doc/pub/week42/ipynb/ipynb-week42-src.tar.gz and b/doc/pub/week42/ipynb/ipynb-week42-src.tar.gz differ diff --git a/doc/pub/week42/ipynb/week42.ipynb b/doc/pub/week42/ipynb/week42.ipynb index 43c87f402..9f1147cb4 100644 --- a/doc/pub/week42/ipynb/week42.ipynb +++ b/doc/pub/week42/ipynb/week42.ipynb @@ -10,7 +10,7 @@ " \n", "**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University\n", "\n", - "Date: **Oct 20, 2021**\n", + "Date: **Oct 21, 2021**\n", "\n", "Copyright 1999-2021, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license\n", "\n", @@ -3362,9 +3362,27 @@ "\n", "## Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms)\n", "\n", + "For problems with so-called harmonic oscillations, given by for example the following differential equation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "m\\frac{d^2x(t)}(dt^2}+\\eta\\frac{dx}{dt}+x(t)=F(t),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $F(t)$ is an applied external force acting on the system (often called a driving force), one can use the theory of Fourier transformations to find the solutions of this type of equations.\n", + "\n", "If one has several driving forces, $F(t)=\\sum_n F_n(t)$, one can find\n", "the particular solution to each $F_n$, $x_{pn}(t)$, and the particular\n", - "solution for the entire driving force is" + "solution for the entire driving force is then given by a series like" ] }, { @@ -3386,13 +3404,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This is known as the principal of superposition. It only applies when\n", + "## Principle of Superposition\n", + "\n", + "This is known as the principle of superposition. It only applies when\n", "the homogenous equation is linear. If there were an anharmonic term\n", "such as $x^3$ in the homogenous equation, then when one summed various\n", "solutions, $x=(\\sum_n x_n)^2$, one would get cross\n", "terms. Superposition is especially useful when $F(t)$ can be written\n", "as a sum of sinusoidal terms, because the solutions for each\n", - "sinusoidal (sine or cosine) term is analytic, as we saw above.\n", + "sinusoidal (sine or cosine) term is analytic. \n", "\n", "Driving forces are often periodic, even when they are not\n", "sinusoidal. Periodicity implies that for some time $\\tau$" @@ -3418,6 +3438,8 @@ "makes many wave forms non-sinusoidal even when the circuits are being\n", "driven by purely sinusoidal sources.\n", "\n", + "## Simple Code Example\n", + "\n", "The code here shows a typical example of such a square wave generated using the functionality included in the **scipy** Python package. We have used a period of $\\tau=0.2$." ] }, @@ -3479,6 +3501,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "## Wrapping up Fourier transforms\n", + "\n", "We can write down the answer for\n", "$x_{pn}(t)$, by substituting $f_n/m$ or $g_n/m$ for $F_0/m$. By\n", "writing each factor $2n\\pi t/\\tau$ as $n\\omega t$, with $\\omega\\equiv\n", @@ -3529,11 +3553,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ + "## Finding the Coefficients\n", + "\n", "Because the forces have been applied for a long time, any non-zero\n", "damping eliminates the homogenous parts of the solution, so one need\n", "only consider the particular solution for each $n$.\n", "\n", - "The problem will considered solved if one can find expressions for the\n", + "The problem is considered solved if one can find expressions for the\n", "coefficients $f_n$ and $g_n$, even though the solutions are expressed\n", "as an infinite sum. The coefficients can be extracted from the\n", "function $F(t)$ by" diff --git a/doc/src/week39/codes/test10.py b/doc/src/week39/codes/test10.py new file mode 100644 index 000000000..946a8edd2 --- /dev/null +++ b/doc/src/week39/codes/test10.py @@ -0,0 +1,44 @@ + +from random import random, seed +import numpy as np +import matplotlib.pyplot as plt +from mpl_toolkits.mplot3d import Axes3D +from matplotlib import cm +from matplotlib.ticker import LinearLocator, FormatStrFormatter +import sys + +# the number of datapoints +n = 100 +x = 2*np.random.rand(n,1) +y = 4+3*x*x+np.random.randn(n,1) + +X = np.c_[np.ones((n,1)), x, x*x] +XT_X = X.T @ X + +#Ridge parameter lambda +lmbda = 0.001 +Id = lmbda* np.eye(XT_X.shape[0]) + +beta_linreg = np.linalg.inv(XT_X+Id) @ X.T @ y +print(beta_linreg) +# Start plain gradient descent +beta = np.random.randn(2,1) + +eta = 0.1 +Niterations = 100 + +for iter in range(Niterations): + gradients = 2.0/n*X.T @ (X @ (beta)-y)+2*lmbda*beta + beta -= eta*gradients + +print(beta) +ypredict = X @ beta +ypredict2 = X @ beta_linreg +plt.plot(x, ypredict, "r-") +plt.plot(x, ypredict2, "b-") +plt.plot(x, y ,'ro') +plt.axis([0,2.0,0, 15.0]) +plt.xlabel(r'$x$') +plt.ylabel(r'$y$') +plt.title(r'Gradient descent example for Ridge') +plt.show() diff --git a/doc/src/week39/codes/test8.py b/doc/src/week39/codes/test8.py new file mode 100644 index 000000000..16adb5806 --- /dev/null +++ b/doc/src/week39/codes/test8.py @@ -0,0 +1,77 @@ +""" +Code to test Ridge and NNs using Scikit-Learn only +""" + +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn import linear_model +from sklearn.neural_network import MLPRegressor +from sklearn.metrics import accuracy_score +import seaborn as sns + + +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(315) + +n = 100 +x = np.random.rand(n) +y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + +Maxpolydegree = 5 +X = np.zeros((n,Maxpolydegree-1)) + +for degree in range(1,Maxpolydegree): #No intercept column + X[:,degree-1] = x**(degree) + +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) + +# Decide which values of lambda to use + +nlambdas = 10 +lmbd_vals = np.logspace(-4, 0, nlambdas) +MSERidgePredict = np.zeros(nlambdas) +for i in range(nlambdas): + lmb = lmbd_vals[i] + RegRidge = linear_model.Ridge(lmb) + RegRidge.fit(X_train,y_train) + ypredictRidge = RegRidge.predict(X_test) + MSERidgePredict[i] = MSE(y_test,ypredictRidge) + +plt.figure() +plt.plot(np.log10(lmbd_vals), MSERidgePredict, 'g--', label = 'MSE SL Ridge Test') +plt.xlabel('log10(lambda)') +plt.ylabel('MSE') +plt.legend() +plt.show() + +# Neural Network part + +n_hidden_neurons = 50 +epochs = 100 +# store models for later use +eta_vals = np.logspace(-4, 0, 10) +# store the models for later use +DNN_scikit = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object) +test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals))) +sns.set() +for i, eta in enumerate(eta_vals): + for j, lmbd in enumerate(lmbd_vals): + dnn = MLPRegressor(hidden_layer_sizes=(n_hidden_neurons), activation='logistic', + alpha=lmbd, learning_rate_init=eta, max_iter=epochs) + dnn.fit(X_train, y_train) + ypredictMLP = dnn.predict(X_test) + test_accuracy[i][j] = MSE(ypredictMLP, y_test) + +fig, ax = plt.subplots(figsize = (10, 10)) +sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis") +ax.set_title("Training Accuracy") +ax.set_ylabel("$\eta$") +ax.set_xlabel("$\lambda$") +plt.show() diff --git a/doc/src/week39/codes/test9.py b/doc/src/week39/codes/test9.py new file mode 100644 index 000000000..d0e561644 --- /dev/null +++ b/doc/src/week39/codes/test9.py @@ -0,0 +1,84 @@ +""" +Code to test Ridge with own gradient descent and SGD +""" + +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from sklearn.model_selection import train_test_split +from sklearn import linear_model +from sklearn.neural_network import MLPRegressor +from sklearn.metrics import accuracy_score +import seaborn as sns +import autograd.numpy as np +from autograd import grad + + +def MSE(y_data,y_model): + n = np.size(y_model) + return np.sum((y_data-y_model)**2)/n +# A seed just to ensure that the random numbers are the same for every run. +# Useful for eventual debugging. +np.random.seed(315) + +n = 100 +x = np.random.rand(n) +y = np.exp(-x**2) + 1.5 * np.exp(-(x-2)**2) + +Maxpolydegree = 5 +X = np.zeros((n,Maxpolydegree-1)) + +for degree in range(1,Maxpolydegree): #No intercept column + X[:,degree-1] = x**(degree) + +# We split the data in test and training data +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) + + +nlambdas = 10 +lmbd_vals = np.logspace(-4, 0, nlambdas) +MSERidgePredict = np.zeros(nlambdas) +for i in range(nlambdas): + lmb = lmbd_vals[i] + RegRidge = linear_model.Ridge(lmb,fit_intercept=False) + RegRidge.fit(X_train,y_train) + ypredictRidge = RegRidge.predict(X_test) + MSERidgePredict[i] = MSE(y_test,ypredictRidge) + +beta = np.random.randn(X_train.shape[1],1) +loss = np.mean((y_train.reshape(-1,1) - X_train@beta)**2) +print(loss) +get_grad = grad(loss,argnum=2) +grad_beta = get_grad(X_train,y_train,beta) +#print(grad_beta) + +""" +print(beta) +print( (X_train.T @ y_train).T) +# Make own gradient descent and define precalculated quantities, saves cycles +XT_X = X_train.T @ X_train +XTy = X_train.T @ y_train +MSERidgeGDPredict = np.zeros(nlambdas) +for i in range(nlambdas): + lmb = lmbd_vals[i] + Id = lmb* np.eye(XT_X.shape[0]) + beta = np.random.randn(X_train.shape[1],1) + eta = 0.01 + Niterations = 2 +# beta_linreg = np.linalg.pinv(XT_X+Id) @ X_train.T @ y_train + for iter in range(Niterations): + XX = XT_X @ beta-XTy + gradients = (2.0/n)*XX *lmb*beta + beta -= eta*gradients + ypredictRidgeGD = X_test @ beta + MSERidgeGDPredict[i] = MSE(y_test,ypredictRidgeGD) + +plt.figure() +plt.plot(np.log10(lmbd_vals), MSERidgePredict, 'g--', label = 'MSE Sklearn Ridge Test') +plt.plot(np.log10(lmbd_vals), MSERidgeGDPredict, 'r', label = 'MSE GD Ridge Test') +plt.xlabel('log10(lambda)') +plt.ylabel('MSE') +plt.legend() +plt.show() +""" + diff --git a/doc/src/week42/week42.do.txt b/doc/src/week42/week42.do.txt index 6a88d2d44..a431401b8 100644 --- a/doc/src/week42/week42.do.txt +++ b/doc/src/week42/week42.do.txt @@ -2651,9 +2651,17 @@ Let us remind of this and recast it in terms of the mathematical operation of co !split ===== Convolution Examples: Principle of Superposition and Periodic Forces (Fourier Transforms) ===== +For problems with so-called harmonic oscillations, given by for example the following differential equation +!bt +\[ +m\frac{d^2x(t)}(dt^2}+\eta\frac{dx}{dt}+x(t)=F(t), +\] +!et +where $F(t)$ is an applied external force acting on the system (often called a driving force), one can use the theory of Fourier transformations to find the solutions of this type of equations. + If one has several driving forces, $F(t)=\sum_n F_n(t)$, one can find the particular solution to each $F_n$, $x_{pn}(t)$, and the particular -solution for the entire driving force is +solution for the entire driving force is then given by a series like !bt \begin{equation} @@ -2661,13 +2669,16 @@ x_p(t)=\sum_nx_{pn}(t). \end{equation} !et -This is known as the principal of superposition. It only applies when +!split +===== Principle of Superposition ===== + +This is known as the principle of superposition. It only applies when the homogenous equation is linear. If there were an anharmonic term such as $x^3$ in the homogenous equation, then when one summed various solutions, $x=(\sum_n x_n)^2$, one would get cross terms. Superposition is especially useful when $F(t)$ can be written as a sum of sinusoidal terms, because the solutions for each -sinusoidal (sine or cosine) term is analytic, as we saw above. +sinusoidal (sine or cosine) term is analytic. Driving forces are often periodic, even when they are not sinusoidal. Periodicity implies that for some time $\tau$ @@ -2683,6 +2694,9 @@ components in electric circuits are non-linear, e.g. diodes, which makes many wave forms non-sinusoidal even when the circuits are being driven by purely sinusoidal sources. +!split +===== Simple Code Example ===== + The code here shows a typical example of such a square wave generated using the functionality included in the _scipy_ Python package. We have used a period of $\tau=0.2$. !bc pycod @@ -2718,6 +2732,9 @@ F(t)=\frac{f_0}{2}+\sum_{n>0} f_n\cos(2n\pi t/\tau)+g_n\sin(2n\pi t/\tau). \end{equation} !et +!split +===== Wrapping up Fourier transforms ===== + We can write down the answer for $x_{pn}(t)$, by substituting $f_n/m$ or $g_n/m$ for $F_0/m$. By writing each factor $2n\pi t/\tau$ as $n\omega t$, with $\omega\equiv @@ -2745,11 +2762,14 @@ x_p(t)&=&\frac{f_0}{2k}+\sum_{n>0} \alpha_n\cos(n\omega t-\delta_n)+\beta_n\sin( \end{eqnarray} !et +!split +===== Finding the Coefficients ===== + Because the forces have been applied for a long time, any non-zero damping eliminates the homogenous parts of the solution, so one need only consider the particular solution for each $n$. -The problem will considered solved if one can find expressions for the +The problem is considered solved if one can find expressions for the coefficients $f_n$ and $g_n$, even though the solutions are expressed as an infinite sum. The coefficients can be extracted from the function $F(t)$ by