Skip to content

Instantly share code, notes, and snippets.

@qbeer
Last active November 8, 2021 14:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save qbeer/1df46c5028ad976dcf497f8117046830 to your computer and use it in GitHub Desktop.
Save qbeer/1df46c5028ad976dcf497f8117046830 to your computer and use it in GitHub Desktop.
hw9_raw.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "hw9_raw.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyMpPuzRPDj9jd6nBSK7aLzL",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/qbeer/1df46c5028ad976dcf497f8117046830/hw9_raw.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "29Y5kqYwudaB"
},
"source": [
"## Neural networks, introduction\n",
"\n",
"\n",
"### 1. Implement a logistic regression model on MNIST for binary classification in Numpy\n",
"\n",
"* use `from sklearn.datasets import load_digits`\n",
" * the provided data files: X_train, X_test are a split generated by the author of this exercise\n",
" * w, b are the fitted logistic regression weight and bias, the predictions on the provided test set can be generated by: `y_pred_test = sigmoid(np.dot(w, X_test.T) + b)`\n",
" * the binarized accuracy score should be above 98% for this particular data\n",
"* divide the data into 0 vs. 1-9. categories\n",
" * the goal is to separate the zeros\n",
"* y = logistic(wx + b)\n",
"* optimize the model via stochastic mini-batch gradient descent until you reach above 90% accuracy on the test set\n",
"\n",
"* the loss:\n",
"\n",
"![image.png](data:image/png;base64,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)\n",
"\n",
"* the gradients of the mini-batch loss:\n",
"\n",
"![image.png](data:image/png;base64,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)\n",
"\n",
"### 2. MLP model in `tf.keras`\n",
"\n",
"* implement a model as such:\n",
"\n",
" * 750 neuron, relu activation\n",
" * 500 neuron, relu activation\n",
" * 500 neuron, relu activation\n",
" * 10 neuron, softmax activation\n",
"\n",
"* use the `tf.keras.datasets.mnist` dataset in this case\n",
"* preprocess if necessary\n",
"* use the 'sgd' optimizer, log the loss ('categorical_crossentropy') and the accuracy, as well as the AUC score during training, visualize the history of these values\n",
"\n",
"### 3. Evaluation\n",
"\n",
"* confusion matrix on the test set\n",
"* visualize mistakes (at least 16) in a grid, show the true and the predicted labels\n",
"* plot the ROC curve for each predicted class\n",
"\n",
"### 4. Come up with your own model\n",
"\n",
"* come up with your own small model (< 100'000 neurons)\n",
"* train it for 50 epochs\n",
"* visualize the loss for train/test on the same plot\n",
" * what are your thoughs on the phenomenon?\n",
"* plot the ROC curves and the AUC scores\n",
"\n",
"### 5. Experiment with the CIFAR10 dataset\n",
"\n",
"* preprocess the data, modify the models accordingly\n",
" * train your small model as well as the model in the 3rd task on the CIFAR10 dataset\n",
"* compare the results\n",
"* are these models powerful enough to fit this data?\n",
"\n",
"\n",
"Hints:\n",
"On total you can get 10 points for fully completing all tasks.\n",
"Decorate your notebook with, questions, explanation etc, make it self contained and understandable!\n",
"Comments you code when necessary\n",
"Write functions for repetitive tasks!\n",
"Use the pandas package for data loading and handling\n",
"Use matplotlib and seaborn for plotting or bokeh and plotly for interactive investigation\n",
"Use the scikit learn package for almost everything\n",
"Use for loops only if it is really necessary!\n",
"Code sharing is not allowed between student! Sharing code will result in zero points.\n",
"If you use code found on web, it is OK, but, make its source clear!"
]
},
{
"cell_type": "code",
"metadata": {
"id": "f6844lrcvNHn"
},
"source": [
""
],
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment