[PYTHON] "Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 17) J'ai essayé de créer DeepConvNet avec Keras

En lisant "Deep Learning from scratch" (écrit par Yasuki Saito, publié par O'Reilly Japan), je noterai les sites auxquels j'ai fait référence. Partie 16

DeepConvNet Construisons DeepConvNet avec Keras décrit à partir de la page 241 du livre.

g8-1.jpg

Je me demande s'il y a beaucoup de couches et c'est profond là-bas, mais je ne sais pas pourquoi cela améliore la précision de la reconnaissance.

Mais

Vous pouvez imiter l'exemple de script et l'exécuter.

Je l'ai essayé.

from google.colab import drive
drive.mount('/content/drive')

import sys, os
sys.path.append('/content/drive/My Drive/Colab Notebooks/deep_learning/common')
sys.path.append('/content/drive/My Drive/Colab Notebooks/deep_learning/dataset')

#TensorFlow et tf.importer des keras
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from keras.layers import Dense, Activation, Flatten, Conv2D, MaxPooling2D, Dropout

#Importer une bibliothèque d'aide
import numpy as np
import matplotlib.pyplot as plt

from mnist import load_mnist
#Lire les données
(x_train, t_train), (x_test, t_test) = load_mnist(flatten=False)
X_train = x_train.transpose(0,2,3,1)
X_test = x_test.transpose(0,2,3,1)
input_shape=(28,28,1)
filter_num = 16
filter_size = 3
filter_stride = 1
filter_num2 = 32
filter_num3 = 64
pool_size_h=2
pool_size_w=2
pool_stride=2
d_rate = 0.5
hidden_size=100
output_size=10

model = keras.Sequential(name="DeepConvNet")
model.add(keras.Input(shape=input_shape))
model.add(Conv2D(filter_num, filter_size, strides=filter_stride, padding="same", activation="relu", kernel_initializer='he_normal'))
model.add(Conv2D(filter_num, filter_size, strides=filter_stride, padding="same", activation="relu", kernel_initializer='he_normal'))
model.add(MaxPooling2D(pool_size=(pool_size_h, pool_size_w),strides=pool_stride))

model.add(Conv2D(filter_num2, filter_size, strides=filter_stride, padding="same", activation="relu", kernel_initializer='he_normal'))
model.add(Conv2D(filter_num2, filter_size, strides=filter_stride, padding="same", activation="relu", kernel_initializer='he_normal'))
model.add(MaxPooling2D(pool_size=(pool_size_h, pool_size_w),strides=pool_stride))

model.add(Conv2D(filter_num3, filter_size, strides=filter_stride, padding="same", activation="relu", kernel_initializer='he_normal'))
model.add(Conv2D(filter_num3, filter_size, strides=filter_stride, padding="same", activation="relu", kernel_initializer='he_normal'))
model.add(MaxPooling2D(pool_size=(pool_size_h, pool_size_w),strides=pool_stride))

model.add(keras.layers.Flatten())
model.add(Dense(hidden_size, activation="relu", kernel_initializer='he_normal')) 
model.add(Dropout(d_rate))
model.add(Dense(output_size))
model.add(Dropout(d_rate))
model.add(Activation("softmax")) 

#Compiler le modèle
model.compile(loss="sparse_categorical_crossentropy", 
              optimizer="adam", 
              metrics=["accuracy"])

En spécifiant padding = "same", l'image de sortie aura la même taille que l'image d'entrée.

model.summary()

Model: "DeepConvNet" Layer (type)          Output Shape      Param #


conv2d (Conv2D)        (None, 28, 28, 16)    160
conv2d_1 (Conv2D)       (None, 28, 28, 16)    2320
max_pooling2d (MaxPooling2D) (None, 14, 14, 16)    0
conv2d_2 (Conv2D)       (None, 14, 14, 32)    4640
conv2d_3 (Conv2D)       (None, 14, 14, 32)    9248
max_pooling2d_1 (MaxPooling2 (None, 7, 7, 32)     0
conv2d_4 (Conv2D)       (None, 7, 7, 64)     18496
conv2d_5 (Conv2D)       (None, 7, 7, 64)     36928
max_pooling2d_2 (MaxPooling2 (None, 3, 3, 64)     0
flatten (Flatten)       (None, 576)        0
dense (Dense)         (None, 100)        57700
dropout (Dropout)       (None, 100)        0
dense_1 (Dense)        (None, 10)         1010
dropout_1 (Dropout)      (None, 10)        0
activation (Activation)    (None, 10)        0


Total params: 130,502 Trainable params: 130,502 Non-trainable params: 0

model.fit(X_train, t_train,  epochs=5, batch_size=128)
test_loss, test_acc = model.evaluate(X_test,  t_test, verbose=2)
print('\nTest accuracy:', test_acc)

313/313 - 6s - loss: 0.0313 - accuracy: 0.9902 Test accuracy: 0.9901999831199646

Cela semble fonctionner correctement.

Partie 16 ← Cliquez ici pour la liste des mémos, etc. Glossaire illisible

Recommended Posts

"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 17) J'ai essayé de créer DeepConvNet avec Keras
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 16) J'ai essayé de créer SimpleConvNet avec Keras
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 11) CNN
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 19) Augmentation des données
[Deep Learning from scratch] J'ai essayé d'expliquer le décrochage
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 18) One! Miaou! Grad-CAM!
J'ai essayé d'implémenter Perceptron Part 1 [Deep Learning from scratch]
Mémo d'auto-apprentissage "Deep Learning from scratch" (n ° 15) Tutoriel pour débutants TensorFlow
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 12) Deep learning
J'ai essayé de rendre le deep learning évolutif avec Spark × Keras × Docker
Mémo d'auto-apprentissage "Deep Learning from scratch" (n ° 13) Essayez d'utiliser Google Colaboratory
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 10-2) Valeur initiale du poids
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 8) J'ai dessiné le graphique du chapitre 6 avec matplotlib
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 9) Classe MultiLayerNet
Mémo d'auto-apprentissage «Deep Learning from scratch» (10) Classe MultiLayerNet
[Deep Learning from scratch] J'ai essayé d'implémenter la couche sigmoïde et la couche Relu
J'ai essayé d'extraire le dessin au trait de l'image avec Deep Learning
J'ai essayé de rendre le deep learning évolutif avec Spark × Keras × Docker 2 Multi-host edition
Essayez de créer un réseau de neurones / d'apprentissage en profondeur avec scratch
J'ai essayé d'écrire dans un modèle de langage profondément appris
[Deep Learning from scratch] J'ai essayé d'expliquer la confirmation du gradient d'une manière facile à comprendre.
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 14) Exécutez le programme du chapitre 4 sur Google Colaboratory
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 7]
[Mémo d'apprentissage] Deep Learning fait de zéro [Chapitre 5]
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 6]
Deep learning / Deep learning made from scratch Chapitre 7 Mémo
[Mémo d'apprentissage] Deep Learning fait de zéro [~ Chapitre 4]
J'ai essayé de mettre en œuvre un apprentissage en profondeur qui n'est pas profond avec uniquement NumPy
J'ai essayé de déplacer GAN (mnist) avec keras
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
Deep Learning from scratch Chapter 2 Perceptron (lecture du mémo)
J'ai essayé d'intégrer Keras dans TFv1.1
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
Apprentissage profond à partir de zéro
[Python] [Traitement du langage naturel] J'ai essayé le Deep Learning ❷ fait de toutes pièces en japonais ①
J'ai essayé le deep learning
J'ai essayé d'implémenter Cifar10 avec la bibliothèque SONY Deep Learning NNabla [Nippon Hurray]
[Python] J'ai essayé le même calcul que la prédiction de LSTM à partir de zéro [Keras]
[Deep Learning from scratch] J'ai implémenté la couche Affine
J'ai essayé de créer un pipeline ML avec Cloud Composer
J'ai essayé d'implémenter Grad-CAM avec keras et tensorflow
J'ai essayé de prédire les courses de chevaux en faisant tout, de la collecte de données à l'apprentissage en profondeur
Osez apprendre avec Ruby "Deep Learning from scratch" Importation de fichiers pickle depuis PyCall interdit
J'ai essayé de créer un environnement d'apprentissage automatique avec Python (Mac OS X)
Créez un environnement pour "Deep Learning from scratch" avec Docker
Mayungo's Python Learning Episode 3: J'ai essayé d'imprimer des nombres
J'ai essayé d'implémenter ListNet d'apprentissage de rang avec Chainer
J'ai capturé le projet Toho avec Deep Learning ... je le voulais.
J'ai essayé de faire d'Othello AI que j'ai appris 7,2 millions de mains par apprentissage profond avec Chainer
Un mémo lors de l'exécution de l'exemple de code de Deep Learning créé à partir de zéro avec Google Colaboratory
Deep learning / Deep learning from scratch 2 Chapitre 4 Mémo
J'ai essayé d'implémenter Deep VQE
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 5 Mémo
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
Apprentissage profond à partir de zéro (calcul des coûts)
J'ai essayé l'apprentissage par renforcement profond (Double DQN) avec ChainerRL
J'ai lu "Renforcer l'apprentissage avec Python de l'introduction à la pratique" Chapitre 1
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 7 Mémo