Skip to content

Instantly share code, notes, and snippets.

@hotchpotch
Created April 14, 2022 11:36
Show Gist options
  • Save hotchpotch/6083f71afea4b28cc7de1a079939d3c4 to your computer and use it in GitHub Desktop.
Save hotchpotch/6083f71afea4b28cc7de1a079939d3c4 to your computer and use it in GitHub Desktop.
[jax] mnist を最小二乗法でクラス分類・ランダムな特徴を追加
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/hotchpotch/6083f71afea4b28cc7de1a079939d3c4/-jax-mnist.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "cI3s299_TuwL"
},
"outputs": [],
"source": [
"import jax.numpy.linalg as npl\n",
"import jax.numpy as np\n",
"import matplotlib.pyplot as plt\n"
]
},
{
"cell_type": "code",
"source": [
"from keras.datasets import mnist\n",
"\n",
"# データ取得\n",
"(train_images, train_labels), (test_images, test_labels) = mnist.load_data()\n",
"\n",
"def conv_images(images, add_random_features=False):\n",
" size = images.shape[0]\n",
" images = images.reshape(size, -1) / 255.0\n",
" ones = np.ones((size,1))\n",
" return np.hstack([ones, images])\n",
"\n",
"train_images = conv_images(train_images)\n",
"test_images = conv_images(test_images)\n",
"SIZE = train_images.shape[-1] - 1\n",
"SIZE\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "v6jSFsP7UrC4",
"outputId": "ec493b9d-9b58-4850-f2c3-68925de91b6f"
},
"execution_count": 2,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"784"
]
},
"metadata": {},
"execution_count": 2
}
]
},
{
"cell_type": "code",
"source": [
"train_images.shape"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "PVfaUsoTZR3M",
"outputId": "b1676188-494b-4a9c-a7aa-9043b500fff9"
},
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(60000, 785)"
]
},
"metadata": {},
"execution_count": 3
}
]
},
{
"cell_type": "code",
"source": [
"from sklearn.preprocessing import OneHotEncoder\n",
"ohe = OneHotEncoder()\n",
"y_train = np.array(ohe.fit_transform(train_labels.reshape(-1, 1)).toarray())\n"
],
"metadata": {
"id": "FSQLcBW_VCgx"
},
"execution_count": 4,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import os\n",
"# os.environ['TF_FORCE_UNIFIED_MEMORY'] = '1'\n",
"try:\n",
" # 一度目は cuSolverがlstsq でエラーが出てしまう?\n",
" # https://github.com/google/jax/issues/4674\n",
" theta = npl.lstsq(train_images, y_train)[0]\n",
"except RuntimeError:\n",
" print('er')\n",
" theta = npl.lstsq(train_images, y_train)[0]\n"
],
"metadata": {
"id": "Z0va938sWxa9",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "07484708-c875-4bdd-db31-df7c4a2068f2"
},
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"er\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# 正答率を出す\n",
"pred_labels = np.argmax(test_images @ theta, axis=1)\n",
"np.count_nonzero(test_labels == pred_labels) / test_labels.shape[0]\n"
],
"metadata": {
"id": "O3n7EgtygyVr",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "ea8d7d1d-003a-4bbd-dcfc-b96ac9f028c0"
},
"execution_count": 6,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"DeviceArray(0.85950005, dtype=float32)"
]
},
"metadata": {},
"execution_count": 6
}
]
},
{
"cell_type": "code",
"source": [
"import seaborn as sn\n",
"import numpy as npo\n",
"import pandas as pd\n",
"\n",
"plt.rcParams[\"figure.figsize\"] = (15, 10)\n",
"def confusion_matrix(y, yhat, K=10):\n",
" C = npo.zeros((K,K))\n",
" for i in range(K):\n",
" for j in range(K):\n",
" C[i,j] = sum(npo.logical_and(y == i, yhat == j))\n",
" return C\n",
"\n",
"c = confusion_matrix(test_labels, pred_labels)\n",
"df_cm = pd.DataFrame(c)\n",
"sn.heatmap(df_cm, annot=True, fmt='g')"
],
"metadata": {
"id": "k-tjuOJkut7s",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 486
},
"outputId": "4e63345d-511d-4ad4-865a-2ea30131e716"
},
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f1680282310>"
]
},
"metadata": {},
"execution_count": 7
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1080x720 with 2 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"# ランダムな数値と非線形関数を組み合わせ、新たな特徴を作る\n",
"# ベクトル・行列からはじめる最適化数学読み進めの14章 P317 の手法\n",
"\n",
"def gen_random_features(shape):\n",
" s = npo.random.random_sample(shape) * 2 - 1\n",
" return s\n",
"\n",
"# ft = gen_random_features((5000, SIZE))\n",
"ft = gen_random_features((1000, SIZE))\n",
"\n",
"train_add_ft = np.delete(train_images, 0, axis=1) @ ft.T\n",
"train_add_ft = np.where(train_add_ft > 0, train_add_ft, 0)\n",
"\n",
"test_add_ft = np.delete(test_images, 0, axis=1) @ ft.T\n",
"test_add_ft = np.where(test_add_ft > 0, test_add_ft, 0)\n",
"\n",
"train_images_ft = np.hstack([train_images, train_add_ft])\n",
"test_images_ft = np.hstack([test_images, test_add_ft])\n",
"\n",
"train_images_ft.shape, test_images_ft.shape"
],
"metadata": {
"id": "jLAd5JeOhtyk",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "9cabb562-5dd6-4cb1-ad89-3d7afd77a886"
},
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"((60000, 1785), (10000, 1785))"
]
},
"metadata": {},
"execution_count": 8
}
]
},
{
"cell_type": "code",
"source": [
"# 普通のnumpyなら24秒ぐらいかかる\n",
"%%time\n",
"theta_ft = npl.lstsq(train_images_ft, y_train)[0]\n",
"\n"
],
"metadata": {
"id": "SfbPLwtBiAhP",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "dfe52ca4-d93f-40f5-a090-5787727ee3bb"
},
"execution_count": 9,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"CPU times: user 1.48 s, sys: 275 ms, total: 1.75 s\n",
"Wall time: 1.72 s\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# 正答率を出す\n",
"pred_ft_labels = np.argmax(test_images_ft @ theta_ft, axis=1)\n",
"np.count_nonzero(pred_ft_labels == test_labels) / test_labels.shape[0]"
],
"metadata": {
"id": "RWcrLGIsiCT8",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "62a67ccd-8c4c-4e26-93b4-95f53fd4b781"
},
"execution_count": 10,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"DeviceArray(0.9423, dtype=float32)"
]
},
"metadata": {},
"execution_count": 10
}
]
},
{
"cell_type": "code",
"source": [
"c = confusion_matrix(test_labels, pred_ft_labels)\n",
"df_cm = pd.DataFrame(c)\n",
"sn.heatmap(df_cm, annot=True, fmt='g')"
],
"metadata": {
"id": "nYfaiG1Yv_WR",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 486
},
"outputId": "72121e1b-4e68-4088-d588-80fb4de14eeb"
},
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f128549e610>"
]
},
"metadata": {},
"execution_count": 11
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1080x720 with 2 Axes>"
],
"image/png": "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h1KuXBnOns3mqadf5tix464jXXbPJi7j2KnvCPf5eOm38ZSKjODtmas5k53LH0YtBPwT1l/p3IC7G9Tir9NW0vX9mYClc91ruK5iGbd/wGWm40U+fYbk034hv4T5KfNLAhPWa+DvuGRYa/f91BeIKBp7BQyD80ZuCK9SJfJTBPkXN576BdeHKlSOjX7UdYSgUbLn0IJ/SSTEZZ/Zc0UcPN+u1sOzk8IXvx4btG1SUEUEAGvtcWDtZc4iIiIiIiIhotBdR0RERERERILfT6qIiIiIiIjIpaHB+n6qiIiIiIiIiOdUERERERER8VCuaiKAKiIiIiIiIuKAKiIiIiIiIh7KdR0gSKgiIiIiIiIinlNFRERERETEQ5oh4qeKiIiIiIiIeE4VERERERERD2mOiJ8qIiIiIiIi4jlVREREREREPJRrXCcIDqqIiIiIiIiI51QRERERERHxkK6s7qeKiIiIiIiIeE4VERERERERD6ke4qeKiIiIiIiIeE4dERERERER8ZyGZomIiIiIeEgXNPRTRURERERERDynioiIiIiIiIe0fK/fZe+I5Fo19DnhvjDXEYKG1RswT06uCrTnGKNLzZ6jY6dfyZ5DXUcIGt9MecZ1hKBRsvsg1xGChs4t5EqmioiIiIiIiIf0VZOf5oiIiIiIiIjnVBEREREREfGQBmX7qSIiIiIiIiKeU0VERERERMRDWjXLTxURERERERHxnCoiIiIiIiIeUj3ETxURERERERHxnCoiIiIiIiIe0qpZfqqIiIiIiIiI51QRERERERHxkNUsEUAVERERERERcUAdERERERER8ZyGZomIiIiIeEiT1f1UEREREREREc+pIiIiIiIi4qFcTVYHVBEREREREREHVBEREREREfGQ6iF+qoiIiIiIiIjnVBEREREREfGQ5oj4qSIiIiIiIiKeU0VERERERMRDuo6IX6GuiMTGVmb+3MmsW7uItWkLefKJh11H8tSQIf1JT09hzZp5edtuuulGliyZRlLSbFasmEF8/G8cJvTOkCED2J2eSsqa+Xnbxo75iOSkL0hO+oItW/5NctIXDhO6EervkaFDBpCxO43UlPz9olvX35KWuoDTp9KpV+8mh+ncCfX94r+1bXMrGzcsZfOXy+n7fB/XcS67ccs20G3AFLoOmMzYZesB+OfcNbR+bRx3vTOVu96ZyrJN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I/KjQ7N+aSdERERERETkQn50+V4REREREbm0VPX2K9QXNBQRERERkeCkioiIiIiIiIdUD/FTRURERERERDynioiIiIiIiIdyVRMBVBEREREREREHVBEREREREfGQrqfmp4qIiIiIiIh4ThUREREREREP5boOECRUEREREREREc+pIiIiIiIi4iGtmuWnioiIiIiIiHhOFREREREREQ9p1Sw/VURERERERMRz6oiIiIiIiIjnNDRLRERERMRDWr7XTxURERERERHxnCoiIiIiIiIeslaT1UEVERERERERcUAVERERERERD+mChn6qiIiIiIiIiOdUERERERER8ZBWzfK77B0Rc7lf4AqSnZvjOkLQ8BntGeeE+VSYPCc3V4fmc8J9Ya4jBIVcq33inFLdB7mOEDSOv9fddYSgUfrpqa4jiFw0VURERERERDxkNUcE0BwRERERERFxQBUREREREREPadUsP1VERERERETEc6qIiIiIiIh4SFdW91NFREREREREPKeKiIiIiIiIh7QwuZ8qIiIiIiIiIcoYU9UYs8gY86UxZqMx5unA9rLGmHnGmG2Bf5cJbDfGmPeMMduNMeuMMfUu9rXVERERERER8ZD18J+fIBt41lp7I5AA9DHG3Ai8CCyw1tYCFgR+BmgP1ArcegP/vNh2UEdERERERCREWWuzrLUpgfvfAJuAKsDtwKjAr40CugTu3w6Mtn4rgdLGmEoX89rqiIiIiIiICMaY6kBdIAm4ylqbFXhoL3BV4H4VYPd5T8sIbPvZNFldRERERMRDXl7Q0BjTG/8QqnOGWmuHXuD3SgBTgT9aa48bY/Ies9ZaY8wlD62OiIiIiIhIIRXodPxPx+N8xpgi+Dsh46y1nwY27zPGVLLWZgWGXu0PbN8DVD3v6bGBbT+bhmaJiIiIiHjIWuvZrSDGX/oYDmyy1r5z3kOfAw8E7j8AfHbe9vsDq2clAMfOG8L1s6giIiIiIiISuhoDPYH1xpi0wLY/A28Dk4wxDwNfA3cFHpsFdAC2A98CvS72hdURERERERHxkJdzRApirV0OmB94uOUFft8CfS7Fa2toloiIiIiIeE4VERERERERD/3ECw0WeqqIiIiIiIiI51QRERERERHxUO5PWM0qFKgiIiIiIiIiniv0HZHo6FIkJg5l/folrFu3mISGca4jOeXz+ViVPIfP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nn45JCZcnjN69Ac0a5pATExZdmxP5rXXBzJy1ESGDh1Aypr5nDlzhkceecZ1TM8lr0rl009nkpw8h+zsbNambeTjYeNcx/LM6NHv07RpI2JiyrB9exKvv/4Ojz/+IgMG/B/h4WGcPv0dffq86DqmJ8aM/oBmzRoRE1OWnTtW0e+1gfTv/wHjxw/mwV6/Iz09g3vvfcx1TCdC7TO1TqXStKp1FfeO+zdhPsMN5UvRrU5VripZjOemp2KMoVSxcP6vtb8yNCHta5bsOECYzxBdrAivti2cFaMLvUf69n2CohERzJ7lX8wgKTmFJ554yXHS4BWKwzsvxBTUEMaYygDW2kxjTGmgFZBurU3+KS9QJKKKWjpADZHPZ4zrCEHDqC3yhPpCCucL84W5jhAUcq32iXN04pLv2HvdXUcIGqWfnuo6QlA5813GFfGhmlD5Vs/e0CszFwdtmxRUEcFam3ne/aPAlMuaSERERESkEAv2SeReKdTXERERERERkeBUYEVEREREREQuHauKCKCKiIiIiIiIOKCKiIiIiIiIh7T4hJ8qIiIiIiIi4jlVREREREREPKRVs/xUEREREREREc+pIiIiIiIi4iHNEfFTRURERERERDynioiIiIiIiIc0R8RPFREREREREfGcKiIiIiIiIh7SldX9VBERERERERHPqSMiIiIiIiKe09AsEREREREP5Wr5XkAVERERERERcUAVERERERERD2myup8qIiIiIiIi4jlVREREREREPKQ5In6qiIiIiIiIiOdUERERERER8ZDmiPipIiIiIiIiIp5TRcRDPmNcRwgaGhuZT98G5AsP0yHpnOycbNcRgoKOFPn0GZIv+qkpriMEjeOjHnEdQS6CzoP8dA4kIiIiIiKe09ePIiIiIiIe0hwRP1VERERERETEc6qIiIiIiIh4SHNE/FQRERERERERz6kiIiIiIiLiIc0R8VNFREREREREPKeOiIiIiIiIeE5Ds0REREREPGRtrusIQUEVERERERER8ZwqIiIiIiIiHsrVZHVAFREREREREXFAFREREREREQ9ZXdAQUEVEREREREQcUEVERERERMRDmiPip4qIiIiIiIh4ThUREREREREPaY6InyoiIiIiIiLiOVVEREREREQ8lKuKCKCKiIiIiIiIOKCKiIiIiIiIh6xWzQJUEREREREREQcKfUfk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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"ft = gen_random_features((5000, SIZE))\n",
"\n",
"train_add_ft = np.delete(train_images, 0, axis=1) @ ft.T\n",
"train_add_ft = np.where(train_add_ft > 0, train_add_ft, 0)\n",
"\n",
"test_add_ft = np.delete(test_images, 0, axis=1) @ ft.T\n",
"test_add_ft = np.where(test_add_ft > 0, test_add_ft, 0)\n",
"\n",
"train_images_ft = np.hstack([train_images, train_add_ft])\n",
"test_images_ft = np.hstack([test_images, test_add_ft])\n",
"\n",
"train_images_ft.shape, test_images_ft.shape"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "lEeix_TQ1OAa",
"outputId": "063dffb0-b2fb-446b-943e-af9dc91abaa9"
},
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"((60000, 5785), (10000, 5785))"
]
},
"metadata": {},
"execution_count": 12
}
]
},
{
"cell_type": "code",
"source": [
"%%time\n",
"theta_ft = npl.lstsq(train_images_ft, y_train)[0]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "lDGWCUBP1Sbc",
"outputId": "6cb1c51f-34f6-44f9-aae7-fadba4bd128d"
},
"execution_count": 13,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"CPU times: user 14 s, sys: 5.77 s, total: 19.8 s\n",
"Wall time: 19.7 s\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# 正答率を出す\n",
"pred_ft_labels = np.argmax(test_images_ft @ theta_ft, axis=1)\n",
"np.count_nonzero(pred_ft_labels == test_labels) / test_labels.shape[0]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "HFpokk9e1UNu",
"outputId": "dbb8006f-1ce8-4c86-c065-b504d88d0363"
},
"execution_count": 14,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"DeviceArray(0.95330006, dtype=float32)"
]
},
"metadata": {},
"execution_count": 14
}
]
},
{
"cell_type": "code",
"source": [
"c = confusion_matrix(test_labels, pred_ft_labels)\n",
"df_cm = pd.DataFrame(c)\n",
"sn.heatmap(df_cm, annot=True, fmt='g')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 486
},
"id": "3iW7UtSB1Vyk",
"outputId": "b67dd157-86f7-42d2-925f-9aa0e43a9322"
},
"execution_count": 15,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f1285340ed0>"
]
},
"metadata": {},
"execution_count": 15
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1080x720 with 2 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
},
"colab": {
"name": "[jax] mnist を最小二乗法でクラス分類・ランダムな特徴を追加",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"accelerator": "GPU"
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment