ใใผใญใใไฝใDeep Learningใ(ๆ่ค ๅบทๆฏ ใ่ใใชใฉใคใชใผใปใธใฃใใณๅ)ใ่ชญใใงใใๆใซใๅ็ งใใใตใคใ็ญใใกใขใใฆใใใพใใใใใฎ๏ผ๏ผ โ โใใฎ๏ผ๏ผ
DeepConvNet
ๆฌใฎP241ใใ่ชฌๆใใใฆใใ DeepConvNet ใ Keras ใงๆง็ฏใใฆใฟใพใใ
ใฌใคใคใใใใๅคใใชใฃใฆใใใใใจใใใใฃใผใใชใใ ใใใจใฏๆใใพใใใใใใงใฉใใใฆ่ช่ญ็ฒพๅบฆใไธใใใฎใใใพใฃใใใใใฃใฆใใพใใใ
ใ
่ฆๆฌใฎในใฏใชใใใใพใญใฆๅใใใใจใฏใงใใใใใงใ
ใใฃใฆใฟใพใใใ
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 ใจ tf.keras ใฎใคใณใใผใ
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from keras.layers import Dense, Activation, Flatten, Conv2D, MaxPooling2D, Dropout
# ใใซใใผใฉใคใใฉใชใฎใคใณใใผใ
import numpy as np
import matplotlib.pyplot as plt
from mnist import load_mnist
# ใใผใฟใฎ่ชญใฟ่พผใฟ
(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"))
# ใขใใซใฎใณใณใใคใซ
model.compile(loss="sparse_categorical_crossentropy",
optimizer="adam",
metrics=["accuracy"])
padding="same" ใจใใๆๅฎใๅ ฅใใใใจใงใๅ ฅๅ็ปๅใฎใตใคใบใจๅใใตใคใบใฎๅบๅ็ปๅใซใชใใพใใ
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
ใกใใใจๅใใฆใใใใใงใใ
ใขใใซใฎไฟๅญ
save_file = '/content/drive/My Drive/Colab Notebooks/deep_learning/dataset/DeepConvNet_weight'
model.save_weights(save_file)
ไฟๅญใใใขใใซใฎๅพฉๅ
# TensorFlow ใจ tf.keras ใฎใคใณใใผใ
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from keras.layers import Dense, Activation, Flatten, Conv2D, MaxPooling2D, Dropout
# ใใซใใผใฉใคใใฉใชใฎใคใณใใผใ
import numpy as np
import matplotlib.pyplot as plt
def create_model():
import numpy as np
import matplotlib.pyplot as plt
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
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(0.5))
model.add(Dense(output_size))
model.add(Dropout(0.5))
model.add(Activation("softmax"))
#ใขใใซใฎใณใณใใคใซ
model.compile(loss="sparse_categorical_crossentropy",
optimizer="adam",
metrics=["accuracy"])
return model
model = create_model()
save_file = '/content/drive/My Drive/Colab Notebooks/deep_learning/dataset/DeepConvNet_weight'
model.load_weights(save_file)
model.summary()
ใใใฎ๏ผ๏ผ โ โใใฎ๏ผ๏ผ
ใกใขใฎ็ฎๆฌก็ญใฏใใกใใใใ่ชญใใชใ็จ่ช้
