Skip to content

Instantly share code, notes, and snippets.

@maxoobot
Created March 27, 2020 03:17
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 maxoobot/f6b43e12b986e2f7de8bfb990438aa40 to your computer and use it in GitHub Desktop.
Save maxoobot/f6b43e12b986e2f7de8bfb990438aa40 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"uuid": "43eae10c-844a-46e7-8b84-1726648a1d26"
},
"source": [
"### 初期設定"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"uuid": "6874d3cc-a9dd-44d8-9efa-d145ccd1c86f"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.0.0-alpha0\n"
]
}
],
"source": [
"import numpy as np\n",
"import tensorflow as tf\n",
"import os\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.model_selection import StratifiedShuffleSplit\n",
"print(tf.__version__)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"uuid": "bfa42ef3-9824-4614-92cd-db81095803dd"
},
"outputs": [],
"source": [
"tf.enable_eager_execution()"
]
},
{
"cell_type": "markdown",
"metadata": {
"uuid": "88a53511-4a76-4481-950a-d201093b8bf5"
},
"source": [
"### データの準備"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"uuid": "f7a4c73c-7f67-43e7-80b0-d25ed5d3ebc5"
},
"outputs": [],
"source": [
"# データの読み込み\n",
"train_data = np.genfromtxt(\"/nas/data/fashion-mnist_train.csv\", delimiter=',', skip_header=1)\n",
"test_data = np.genfromtxt(\"/nas/data/fashion-mnist_test.csv\", delimiter=',', skip_header=1)\n",
"\n",
"train_images, train_labels = train_data[:, 1:], train_data[:, 0]\n",
"test_images, test_labels = test_data[:, 1:], test_data[:, 0]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"uuid": "fdbd14f9-0b59-4546-9ba9-d7916dd696e2"
},
"outputs": [],
"source": [
"# 入力データ(画像情報)を2Dに変換\n",
"X = train_images.reshape((-1, 28, 28, 1))\n",
"X_test = test_images.reshape((-1, 28, 28, 1))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"uuid": "7e9fdfc5-4a69-4814-b301-713cb61f8ce2"
},
"outputs": [],
"source": [
"# 出力データ(ラベル)をone-hotエンコード\n",
"classes_to_index = dict((c, i) for i, c in enumerate(np.unique(train_labels)))\n",
"\n",
"y = np.zeros((train_labels.shape[0], len(np.unique(train_labels))))\n",
"y_test = np.zeros((test_labels.shape[0], len(np.unique(test_labels))))\n",
"\n",
"for i, c in enumerate(train_labels):\n",
" y[i, classes_to_index[c]] = 1\n",
" \n",
"for i, c in enumerate(test_labels):\n",
" y_test[i, classes_to_index[c]] = 1"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"uuid": "5b6e55a9-47df-496d-963d-cda85ebfcae1"
},
"outputs": [],
"source": [
"# validationデータを作成\n",
"strat_split = StratifiedShuffleSplit(n_splits=1, test_size=1/6)\n",
"for train_index, valid_index in strat_split.split(X, y):\n",
" X_train, X_valid = X[train_index], X[valid_index]\n",
" y_train, y_valid = y[train_index], y[valid_index]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"uuid": "6c9efa37-ace5-48e2-b14f-ac7d041fbc1a"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(50000, 28, 28, 1) (10000, 28, 28, 1) (10000, 28, 28, 1)\n",
"(50000, 10) (10000, 10) (10000, 10)\n"
]
}
],
"source": [
"print(X_train.shape, X_valid.shape, X_test.shape)\n",
"print(y_train.shape, y_valid.shape, y_test.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {
"cellType": "markdown",
"uuid": "3a7e35cc-1a50-4173-82b9-5ec0ce5d7aaf"
},
"source": [
"### モデル構築"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"uuid": "72884eeb-0cf9-42bc-bb4a-f7fabd055ce0"
},
"outputs": [],
"source": [
"inputs = tf.keras.Input(shape=(28, 28, 1))\n",
"conv1 = tf.keras.layers.Conv2D(32, 5, activation='relu')(inputs)\n",
"pool1 = tf.keras.layers.MaxPooling2D(2)(conv1)\n",
"conv2 = tf.keras.layers.Conv2D(64, 5, activation='relu')(pool1)\n",
"pool2 = tf.keras.layers.MaxPooling2D(2)(conv2)\n",
"flatten = tf.keras.layers.Flatten()(pool2)\n",
"dense = tf.keras.layers.Dense(1024, activation='relu')(flatten)\n",
"dropout = tf.keras.layers.Dropout(0.4)(dense)\n",
"outputs= tf.keras.layers.Dense(10, activation='softmax')(dropout)\n",
"\n",
"model = tf.keras.Model(inputs=inputs, outputs=outputs, name=\"fashion_mnist_model\")\n",
"model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])"
]
},
{
"cell_type": "markdown",
"metadata": {
"uuid": "ce5b9b60-5a5e-4422-9c8c-2ed686cc92e8"
},
"source": [
"### モデル学習"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"uuid": "4169470e-92e7-4ab9-bb4c-9c855c7f7ab7"
},
"outputs": [],
"source": [
"checkpoint_dir = \"/nas/model/checkpoints/\"\n",
"if not os.path.exists(checkpoint_dir):\n",
" os.makedirs(checkpoint_dir)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"uuid": "ce430e54-2e42-437f-b714-44f40fb25a9e"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 50000 samples, validate on 10000 samples\n",
"Epoch 1/20\n",
"50000/50000 [==============================] - 9s 179us/sample - loss: 0.7087 - acc: 0.7964 - val_loss: 0.4096 - val_acc: 0.8523\n",
"Epoch 2/20\n",
"50000/50000 [==============================] - 8s 152us/sample - loss: 0.3957 - acc: 0.8563 - val_loss: 0.3750 - val_acc: 0.8649\n",
"Epoch 3/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.3614 - acc: 0.8683 - val_loss: 0.3847 - val_acc: 0.8620\n",
"Epoch 4/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.3475 - acc: 0.8734 - val_loss: 0.3397 - val_acc: 0.8739\n",
"Epoch 5/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.3300 - acc: 0.8795 - val_loss: 0.3752 - val_acc: 0.8679\n",
"Epoch 6/20\n",
"50000/50000 [==============================] - 8s 152us/sample - loss: 0.3165 - acc: 0.8854 - val_loss: 0.3400 - val_acc: 0.8806\n",
"Epoch 7/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.3117 - acc: 0.8868 - val_loss: 0.3391 - val_acc: 0.8819\n",
"Epoch 8/20\n",
"50000/50000 [==============================] - 8s 152us/sample - loss: 0.2942 - acc: 0.8921 - val_loss: 0.3744 - val_acc: 0.8715\n",
"Epoch 9/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.2900 - acc: 0.8942 - val_loss: 0.3340 - val_acc: 0.8815\n",
"Epoch 10/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.2869 - acc: 0.8966 - val_loss: 0.3269 - val_acc: 0.8861\n",
"Epoch 11/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.2832 - acc: 0.8984 - val_loss: 0.3379 - val_acc: 0.8847\n",
"Epoch 12/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.2712 - acc: 0.9018 - val_loss: 0.3715 - val_acc: 0.8864\n",
"Epoch 13/20\n",
"50000/50000 [==============================] - 8s 154us/sample - loss: 0.2632 - acc: 0.9055 - val_loss: 0.3709 - val_acc: 0.8829\n",
"Epoch 14/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.2566 - acc: 0.9088 - val_loss: 0.3705 - val_acc: 0.8881\n",
"Epoch 15/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.2657 - acc: 0.9061 - val_loss: 0.3873 - val_acc: 0.8886\n",
"Epoch 16/20\n",
"50000/50000 [==============================] - 8s 152us/sample - loss: 0.2428 - acc: 0.9122 - val_loss: 0.4071 - val_acc: 0.8894\n",
"Epoch 17/20\n",
"50000/50000 [==============================] - 8s 152us/sample - loss: 0.2419 - acc: 0.9140 - val_loss: 0.4069 - val_acc: 0.8821\n",
"Epoch 18/20\n",
"50000/50000 [==============================] - 8s 152us/sample - loss: 0.2366 - acc: 0.9163 - val_loss: 0.3945 - val_acc: 0.8819\n",
"Epoch 19/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.2377 - acc: 0.9166 - val_loss: 0.3986 - val_acc: 0.8886\n",
"Epoch 20/20\n",
"50000/50000 [==============================] - 8s 153us/sample - loss: 0.2289 - acc: 0.9187 - val_loss: 0.4111 - val_acc: 0.8912\n"
]
}
],
"source": [
"model_checkpoint = tf.keras.callbacks.ModelCheckpoint(checkpoint_dir+'fashion_mnist{epoch:02d}.h5', period=1,save_weights_only=True)\n",
"history = model.fit(X_train, y_train, epochs=20, verbose=1, callbacks=[model_checkpoint], validation_data=(X_valid, y_valid))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"uuid": "caa81b44-6480-4ffd-a95f-63199f92eb4c"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(history.history['acc'])\n",
"plt.plot(history.history['val_acc'])\n",
"plt.ylabel('accuracy')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'validation'], loc='upper left')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"uuid": "07372755-50dd-47ac-93a9-3880a3aec353"
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(history.history['loss'])\n",
"plt.plot(history.history['val_loss'])\n",
"plt.ylabel('loss')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'validation'], loc='upper left')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"uuid": "4e0012e7-6fb7-414a-8ae7-e0e8fb4be437"
},
"outputs": [],
"source": [
"# モデルを前のエポック状態に戻す\n",
"model.load_weights(checkpoint_dir+'fashion_mnist09.h5')"
]
},
{
"cell_type": "markdown",
"metadata": {
"uuid": "3ef4d5ac-4042-4b10-9502-cf3b16f11347"
},
"source": [
"### モデル評価"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"uuid": "620de79d-857b-48eb-95bc-bb239a8197b0"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10000/10000 [==============================] - 1s 70us/sample - loss: 0.3090 - acc: 0.8917\n"
]
},
{
"data": {
"text/plain": [
"[0.3089693964600563, 0.8917]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.evaluate(X_test, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"cellType": "markdown",
"uuid": "de640e32-602d-423f-95ba-5e73b3d1f302"
},
"source": [
"### モデル保存"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"uuid": "9a65f272-badf-428b-9610-c13589eece25"
},
"outputs": [],
"source": [
"directory = \"./\"\n",
"if not os.path.exists(directory):\n",
" os.makedirs(directory)\n",
"model.save(directory + \"mnist_model.h5\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"uuid": "946a29be-3fac-4a22-abb1-f8237d26ae70"
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Tensorflow 2.0",
"language": "python",
"name": "tf2"
},
"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"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment