Trong notebook này, mình sẽ trình bày cách giải quyết đề tài tuyển dụng của VinID. Mô hình CNN được sử dụng để phân loại 10 số viết tay trong bộ MNIST. Trong notebook này,bao gồm các phần sau:
Cài đặt thư viện hyperas để hỗ trỡ quá trình tunning siêu tham số. Hyperas cung cấp các api rất tiện lợi cho quá trình theo huấn luyện và theo dõi độ chính xác của model tại mỗi bộ tham số.
In [1]:
!pip install hyperas
Requirement already satisfied: hyperas in /root/anaconda3/lib/python3.6/site-packages (0.4.1)
Requirement already satisfied: entrypoints in /root/anaconda3/lib/python3.6/site-packages (from hyperas) (0.2.3)
Requirement already satisfied: keras in /root/anaconda3/lib/python3.6/site-packages (from hyperas) (2.2.4)
Requirement already satisfied: hyperopt in /root/anaconda3/lib/python3.6/site-packages (from hyperas) (0.1.2)
Requirement already satisfied: nbformat in /root/anaconda3/lib/python3.6/site-packages (from hyperas) (4.4.0)
Requirement already satisfied: jupyter in /root/anaconda3/lib/python3.6/site-packages (from hyperas) (1.0.0)
Requirement already satisfied: nbconvert in /root/anaconda3/lib/python3.6/site-packages (from hyperas) (5.3.1)
Requirement already satisfied: scipy>=0.14 in /root/anaconda3/lib/python3.6/site-packages (from keras->hyperas) (1.3.0)
Requirement already satisfied: keras-applications>=1.0.6 in /root/.local/lib/python3.6/site-packages (from keras->hyperas) (1.0.6)
Requirement already satisfied: keras-preprocessing>=1.0.5 in /root/.local/lib/python3.6/site-packages (from keras->hyperas) (1.0.5)
Requirement already satisfied: pyyaml in /root/anaconda3/lib/python3.6/site-packages (from keras->hyperas) (3.12)
Requirement already satisfied: numpy>=1.9.1 in /root/.local/lib/python3.6/site-packages (from keras->hyperas) (1.17.0)
Requirement already satisfied: six>=1.9.0 in /root/.local/lib/python3.6/site-packages (from keras->hyperas) (1.12.0)
Requirement already satisfied: h5py in /root/anaconda3/lib/python3.6/site-packages (from keras->hyperas) (2.7.1)
Requirement already satisfied: tqdm in /root/anaconda3/lib/python3.6/site-packages (from hyperopt->hyperas) (4.32.2)
Requirement already satisfied: pymongo in /root/anaconda3/lib/python3.6/site-packages (from hyperopt->hyperas) (3.9.0)
Requirement already satisfied: future in /root/.local/lib/python3.6/site-packages (from hyperopt->hyperas) (0.17.1)
Requirement already satisfied: networkx in /root/anaconda3/lib/python3.6/site-packages (from hyperopt->hyperas) (2.1)
Requirement already satisfied: ipython_genutils in /root/anaconda3/lib/python3.6/site-packages (from nbformat->hyperas) (0.2.0)
Requirement already satisfied: traitlets>=4.1 in /root/anaconda3/lib/python3.6/site-packages (from nbformat->hyperas) (4.3.2)
Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /root/anaconda3/lib/python3.6/site-packages (from nbformat->hyperas) (2.6.0)
Requirement already satisfied: jupyter_core in /root/anaconda3/lib/python3.6/site-packages (from nbformat->hyperas) (4.4.0)
Requirement already satisfied: notebook in /root/anaconda3/lib/python3.6/site-packages (from jupyter->hyperas) (5.5.0)
Requirement already satisfied: qtconsole in /root/anaconda3/lib/python3.6/site-packages (from jupyter->hyperas) (4.3.1)
Requirement already satisfied: jupyter-console in /root/anaconda3/lib/python3.6/site-packages (from jupyter->hyperas) (5.2.0)
Requirement already satisfied: ipykernel in /root/anaconda3/lib/python3.6/site-packages (from jupyter->hyperas) (4.8.2)
Requirement already satisfied: ipywidgets in /root/anaconda3/lib/python3.6/site-packages (from jupyter->hyperas) (7.2.1)
Requirement already satisfied: mistune>=0.7.4 in /root/anaconda3/lib/python3.6/site-packages (from nbconvert->hyperas) (0.8.3)
Requirement already satisfied: jinja2 in /root/anaconda3/lib/python3.6/site-packages (from nbconvert->hyperas) (2.10)
Requirement already satisfied: pygments in /root/anaconda3/lib/python3.6/site-packages (from nbconvert->hyperas) (2.2.0)
Requirement already satisfied: bleach in /root/anaconda3/lib/python3.6/site-packages (from nbconvert->hyperas) (2.1.3)
Requirement already satisfied: pandocfilters>=1.4.1 in /root/anaconda3/lib/python3.6/site-packages (from nbconvert->hyperas) (1.4.2)
Requirement already satisfied: testpath in /root/anaconda3/lib/python3.6/site-packages (from nbconvert->hyperas) (0.3.1)
Requirement already satisfied: decorator>=4.1.0 in /root/anaconda3/lib/python3.6/site-packages (from networkx->hyperopt->hyperas) (4.3.0)
Requirement already satisfied: Send2Trash in /root/anaconda3/lib/python3.6/site-packages (from notebook->jupyter->hyperas) (1.5.0)
Requirement already satisfied: pyzmq>=17 in /root/anaconda3/lib/python3.6/site-packages (from notebook->jupyter->hyperas) (17.0.0)
Requirement already satisfied: terminado>=0.8.1 in /root/anaconda3/lib/python3.6/site-packages (from notebook->jupyter->hyperas) (0.8.1)
Requirement already satisfied: jupyter-client>=5.2.0 in /root/anaconda3/lib/python3.6/site-packages (from notebook->jupyter->hyperas) (5.2.3)
Requirement already satisfied: tornado>=4 in /root/anaconda3/lib/python3.6/site-packages (from notebook->jupyter->hyperas) (5.0.2)
Requirement already satisfied: ipython in /root/anaconda3/lib/python3.6/site-packages (from jupyter-console->jupyter->hyperas) (6.4.0)
Requirement already satisfied: prompt_toolkit<2.0.0,>=1.0.0 in /root/anaconda3/lib/python3.6/site-packages (from jupyter-console->jupyter->hyperas) (1.0.15)
Requirement already satisfied: widgetsnbextension~=3.2.0 in /root/anaconda3/lib/python3.6/site-packages (from ipywidgets->jupyter->hyperas) (3.2.1)
Requirement already satisfied: MarkupSafe>=0.23 in /root/anaconda3/lib/python3.6/site-packages (from jinja2->nbconvert->hyperas) (1.0)
Requirement already satisfied: html5lib!=1.0b1,!=1.0b2,!=1.0b3,!=1.0b4,!=1.0b5,!=1.0b6,!=1.0b7,!=1.0b8,>=0.99999999pre in /root/anaconda3/lib/python3.6/site-packages (from bleach->nbconvert->hyperas) (1.0.1)
Requirement already satisfied: python-dateutil>=2.1 in /root/anaconda3/lib/python3.6/site-packages (from jupyter-client>=5.2.0->notebook->jupyter->hyperas) (2.7.3)
Requirement already satisfied: pexpect; sys_platform != "win32" in /root/anaconda3/lib/python3.6/site-packages (from ipython->jupyter-console->jupyter->hyperas) (4.5.0)
Requirement already satisfied: pickleshare in /root/anaconda3/lib/python3.6/site-packages (from ipython->jupyter-console->jupyter->hyperas) (0.7.4)
Requirement already satisfied: backcall in /root/anaconda3/lib/python3.6/site-packages (from ipython->jupyter-console->jupyter->hyperas) (0.1.0)
Requirement already satisfied: setuptools>=18.5 in /root/.local/lib/python3.6/site-packages (from ipython->jupyter-console->jupyter->hyperas) (41.1.0)
Requirement already satisfied: jedi>=0.10 in /root/anaconda3/lib/python3.6/site-packages (from ipython->jupyter-console->jupyter->hyperas) (0.12.0)
Requirement already satisfied: simplegeneric>0.8 in /root/anaconda3/lib/python3.6/site-packages (from ipython->jupyter-console->jupyter->hyperas) (0.8.1)
Requirement already satisfied: wcwidth in /root/anaconda3/lib/python3.6/site-packages (from prompt_toolkit<2.0.0,>=1.0.0->jupyter-console->jupyter->hyperas) (0.1.7)
Requirement already satisfied: webencodings in /root/anaconda3/lib/python3.6/site-packages (from html5lib!=1.0b1,!=1.0b2,!=1.0b3,!=1.0b4,!=1.0b5,!=1.0b6,!=1.0b7,!=1.0b8,>=0.99999999pre->bleach->nbconvert->hyperas) (0.5.1)
Requirement already satisfied: ptyprocess>=0.5 in /root/anaconda3/lib/python3.6/site-packages (from pexpect; sys_platform != "win32"->ipython->jupyter-console->jupyter->hyperas) (0.5.2)
Requirement already satisfied: parso>=0.2.0 in /root/anaconda3/lib/python3.6/site-packages (from jedi>=0.10->ipython->jupyter-console->jupyter->hyperas) (0.2.0)
WARNING: You are using pip version 19.2.2, however version 19.2.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
In [2]:
# Basic compuational libaries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import seaborn as sns
%matplotlib inline
np.random.seed(2)
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
import itertools
from sklearn.model_selection import KFold
from keras.utils.np_utils import to_categorical # convert to one-hot-encoding
from keras.layers import Dense, Dropout, Conv2D, GlobalAveragePooling2D, Flatten, GlobalMaxPooling2D
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D, BatchNormalization
from keras.models import Sequential
from keras.optimizers import RMSprop, Adam, SGD, Nadam
from keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import ReduceLROnPlateau, ModelCheckpoint, EarlyStopping
from keras import regularizers
# Import hyperopt for tunning hyper params
from hyperopt import hp, tpe, fmin
from hyperopt import space_eval
sns.set(style='white', context='notebook', palette='deep')
# Set the random seed
random_seed = 2
/root/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
Using TensorFlow backend.
/root/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/root/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:517: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/root/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:518: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/root/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:519: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/root/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:520: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/root/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/dtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
/root/anaconda3/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:541: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, 1)])
/root/anaconda3/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:542: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, 1)])
/root/anaconda3/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:543: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, 1)])
/root/anaconda3/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:544: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, 1)])
/root/anaconda3/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:545: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, 1)])
/root/anaconda3/lib/python3.6/site-packages/tensorboard/compat/tensorflow_stub/dtypes.py:550: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, 1)])
In [3]:
def data():
# Load the data
train = pd.read_csv("../input/digit-recognizer/train.csv")
test = pd.read_csv("../input/digit-recognizer/test.csv")
Y_train = train["label"]
# Drop 'label' column
X_train = train.drop(labels = ["label"],axis = 1)
# Normalize the data
X_train = X_train / 255.0
test = test / 255.0
# Reshape image in 3 dimensions (height = 28px, width = 28px , canal = 1)
X_train = X_train.values.reshape(-1,28,28,1)
test = test.values.reshape(-1,28,28,1)
# Encode labels to one hot vectors (ex : 2 -> [0,0,1,0,0,0,0,0,0,0])
Y_train = to_categorical(Y_train, num_classes = 10)
return X_train, Y_train, test
X, Y, X_test = data()
In [4]:
g = sns.countplot(np.argmax(Y, axis=1))
Thử nhìn qua một số mẫu trong tập huấn luyện. Chúng ta thấy rằng hầu hết các ảnh đều rõ nét và tương đối dễ dàng để nhận dạng.
In [5]:
for i in range(0, 9):
plt.subplot(330 + (i+1))
plt.imshow(X[i][:,:,0], cmap=plt.get_cmap('gray'))
plt.title(np.argmax(Y[i]));
plt.axis('off')
plt.tight_layout()
Định nghĩa số epochs cần huấn luyện và bachsize
In [6]:
epochs = 30 # Turn epochs to 30 to get 0.9967 accuracy
batch_size = 64
Kĩ thuật data augmentation được sử dụng để phát sinh thêm những mẫu dữ liệu mới bằng cách áp dụng các kĩ thuật xử lý ảnh trên bức ảnh. Các phép biến đổi nhỏ này phải đảm bảo không làm thay đổi nhãn của bức ảnh.
Một số kĩ thuật phổ biến của data augmentation như là:
Ở dưới đây, chúng ta sẽ chọn xoay 1 góc trong 0-10 độ. Zoom ảnh 0.1 lần, tịnh tiến 0.1 lần mỗi chiều.
In [7]:
# With data augmentation to prevent overfitting (accuracy 0.99286)
train_aug = ImageDataGenerator(
rotation_range=10, # randomly rotate images in the range (degrees, 0 to 180)
zoom_range = 0.1, # Randomly zoom image
width_shift_range=0.1, # randomly shift images horizontally (fraction of total width)
height_shift_range=0.1, # randomly shift images vertically (fraction of total height)
)
test_aug = ImageDataGenerator()
CNN bao gồm tập hợp các lớp cơ bản bao gồm: convolution layer + nonlinear layer, pooling layer, fully connected layer. Các lớp này liên kết với nhau theo một thứ tự nhất định. Thông thường, một ảnh sẽ được lan truyền qua tầng convolution layer + nonlinear layer đầu tiên, sau đó các giá trị tính toán được sẽ lan truyền qua pooling layer, bộ ba convolution layer + nonlinear layer + pooling layer có thể được lặp lại nhiều lần trong network. Và sau đó được lan truyền qua tầng fully connected layer và softmax để tính sác xuất ảnh đó chứa vật thế gì.
Chúng ta sử dụng Keras Sequential API để định nghĩa mô hình. Các layer được thêm vào rất dễ dàng và tương đối linh động. Đầu tiên chúng ta sử dụng layer Conv2D trên ảnh đầu vào. Conv2D bao gồm một tập các filters cần phải học. Mỗi filters sẽ trược qua toàn bộ bức ảnh để detect các đặt trưng trên bức ảnh đó.
Pooling layer là tầng quan trọng và thường đứng sau tầng Conv. Tầng này có chức năng giảm chiều của feature maps trước đó. Đối với max-pooling, tầng này chỉ đơn giản chọn giá trị lớn nhất trong vùng có kích thước pooling_size x pooling_size (thường là 2x2). Tầng pooling này được sử dụng để giảm chi phí tính toán và giảm được overfit của mô hình.
Đồng thời, Dropout cũng được sử dụng để hạn chế overfit. Dropout sẽ bỏ đi ngẫu nhiên các neuron bằng cách nhân với mask zeros, do đó, giúp mô hình học được những đặc trưng hữu ích. Dropout trong hầu hết các trường hợp đều giúp tăng độ chính xác và hạn chết overfit của mô hình.
Ở tầng cuối cùng, chúng ta flatten feature matrix thành một vector, sau đó sử dụng các tầng fully connected layers để phân loại ảnh thành các lớp cho trước.
Để giúp mô hình hội tụ gần với gobal minima chúng ta sử dụng annealing learning rate. Learning sẽ được điều chỉnh nhỏ dần sau mỗi lần cập nhật nếu như sau một số bước nhất định mà loss của mô hình không giảm nữa. Để giảm thời gian tính toán, chúng ta có thể sử dụng learning ban đầu lớn, sau đó giảm dần để mô hình hội tụ nhanh hơn.
Ngoài ra, chúng ta sử dụng early stopping để hạn chế hiện tượng overfit của mô hình. early stopping sẽ dừng quá trình huấn luyện nếu như loss trên tập validation tăng dần trong khi trên tập lại giảm.
Trong quá trình định nghĩa mô hình, chúng ta sẽ lồng vào đó các đoạn mã để hỗ trợ quá trình search siêu tham số đã được định nghĩa ở trên. Chúng ta sẽ cần search các tham số như filter_size, pooling_size, dropout rate, dense size. Đồng thời chúng ta cũng thử việc điều chỉnh cả optimizer của mô hình.
In [8]:
# Set the CNN model
def train_model(train_generator, valid_generator, params):
model = Sequential()
model.add(Conv2D(filters = params['conv1'], kernel_size = params['kernel_size_1'], padding = 'Same',
activation ='relu', input_shape = (28,28,1)))
model.add(BatchNormalization())
model.add(Conv2D(filters = params['conv2'], kernel_size = params['kernel_size_2'], padding = 'Same',
activation ='relu'))
model.add(MaxPool2D(pool_size = params['pooling_size_1']))
model.add(Dropout(params['dropout1']))
model.add(BatchNormalization())
model.add(Conv2D(filters = params['conv3'], kernel_size = params['kernel_size_3'], padding = 'Same',
activation ='relu'))
model.add(BatchNormalization())
model.add(Conv2D(filters = params['conv4'], kernel_size = params['kernel_size_4'], padding = 'Same',
activation ='relu'))
model.add(MaxPool2D(pool_size = params['pooling_size_1'], strides=(2,2)))
model.add(Dropout(params['dropout2']))
model.add(Flatten())
model.add(BatchNormalization())
model.add(Dense(params['dense1'], activation = "relu"))
model.add(Dropout(params['dropout3']))
model.add(Dense(10, activation = "softmax"))
if params['opt'] == 'rmsprop':
opt = RMSprop()
elif params['opt'] == 'sgd':
opt = SGD()
elif params['opt'] == 'nadam':
opt = Nadam()
else:
opt = Adam()
model.compile(loss=params['loss'], optimizer=opt, metrics=['acc'])
reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.3, patience=2, mode='auto', cooldown=2, min_lr=1e-7)
early = EarlyStopping(monitor='val_loss', patience=3)
callbacks_list = [reduce_lr, early]
history = model.fit_generator(train_generator,
validation_data=valid_generator,
steps_per_epoch=len(train_generator),
validation_steps=len(valid_generator),
callbacks=callbacks_list, epochs = epochs,
verbose=2)
score, acc = model.evaluate_generator(valid_generator, steps=len(valid_generator), verbose=0)
return acc, model, history
Có rất nhiều siêu tham số cần được tunning như: kiến trúc mạng, số filter, kích thước mỗi filters, kích thước pooling, các cách khởi tạo, hàm kích hoạt, tỉ lệ dropout,... Trong phần này, chúng ta sẽ tập trung vào các tham số như kích thước filter, số filters, pooling size.
Đầu tiên, chúng ta cần khai báo các siêu tham để hyperas có thể tìm kiếm trong tập đấy. Ở mỗi tầng conv, chúng ta sẽ tunning kích thước filter, filter size. Ở tầng pooling, kích thước pooling size sẽ được tunning. Đồng thời, tỉ lệ dropout ở tầng Dropout cũng được tunning. Số filters ở tầng conv thường từ 16 -> 1024, kích thước filter hay thường dùng nhất trong là 3 với 5. Còn tỉ lệ dropout nằm trong đoạn 0-1
In [9]:
#This is the space of hyperparameters that we will search
space = {
'opt':hp.choice('opt', ['adam', 'sgd', 'rmsprop']),
'conv1':hp.choice('conv1', [16, 32, 64, 128]),
'conv2':hp.choice('conv2', [16, 32, 64, 128]),
'kernel_size_1': hp.choice('kernel_size_1', [3, 5]),
'kernel_size_2': hp.choice('kernel_size_2', [3, 5]),
'dropout1': hp.choice('dropout1', [0, 0.25, 0.5]),
'pooling_size_1': hp.choice('pooling_size_1', [2, 3]),
'conv3':hp.choice('conv3', [32, 64, 128, 256, 512]),
'conv4':hp.choice('conv4', [32, 64, 128, 256, 512]),
'kernel_size_3': hp.choice('kernel_size_3', [3, 5]),
'kernel_size_4': hp.choice('kernel_size_4', [3, 5]),
'dropout2':hp.choice('dropout2', [0, 0.25, 0.5]),
'pooling_size_2': hp.choice('pooling_size_2', [2, 3]),
'dense1':hp.choice('dense1', [128, 256, 512, 1024]),
'dropout3':hp.choice('dropout3', [0, 0.25, 0.5]),
'loss': hp.choice('loss', ['categorical_crossentropy', 'kullback_leibler_divergence']),
}
In [10]:
X_train, X_val, Y_train, Y_val = train_test_split(X, Y, test_size = 0.2, random_state=random_seed)
# only apply data augmentation with train data
train_gen = train_aug.flow(X_train, Y_train, batch_size=batch_size)
valid_gen = test_aug.flow(X_val, Y_val, batch_size=batch_size)
def optimize(params):
acc, model, history = train_model(train_gen, valid_gen, params)
return -acc
Chạy quá trình search tham số. Bộ siêu tham số tốt nhất sẽ được ghi nhận lại để chúng ta sử dụng trong mô hình cuối cùng.
In [11]:
best = fmin(fn = optimize, space = space,
algo = tpe.suggest, max_evals = 50) # change to 50 to search more
0%| | 0/50 [00:00<?, ?it/s, best loss: ?]
WARNING: Logging before flag parsing goes to stderr.
W0914 09:43:05.983868 140240089409280 deprecation_wrapper.py:119] From /root/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:74: The name tf.get_default_graph is deprecated. Please use tf.compat.v1.get_default_graph instead.
W0914 09:43:06.065519 140240089409280 deprecation_wrapper.py:119] From /root/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:517: The name tf.placeholder is deprecated. Please use tf.compat.v1.placeholder instead.
W0914 09:43:06.075301 140240089409280 deprecation_wrapper.py:119] From /root/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:4138: The name tf.random_uniform is deprecated. Please use tf.random.uniform instead.
W0914 09:43:06.123427 140240089409280 deprecation_wrapper.py:119] From /root/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:174: The name tf.get_default_session is deprecated. Please use tf.compat.v1.get_default_session instead.
W0914 09:43:06.125205 140240089409280 deprecation_wrapper.py:119] From /root/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:181: The name tf.ConfigProto is deprecated. Please use tf.compat.v1.ConfigProto instead.
W0914 09:43:10.018944 140240089409280 deprecation_wrapper.py:119] From /root/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:1834: The name tf.nn.fused_batch_norm is deprecated. Please use tf.compat.v1.nn.fused_batch_norm instead.
W0914 09:43:10.144633 140240089409280 deprecation_wrapper.py:119] From /root/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:3976: The name tf.nn.max_pool is deprecated. Please use tf.nn.max_pool2d instead.
W0914 09:43:10.155966 140240089409280 deprecation.py:506] From /root/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.
W0914 09:43:10.834075 140240089409280 deprecation_wrapper.py:119] From /root/anaconda3/lib/python3.6/site-packages/keras/optimizers.py:790: The name tf.train.Optimizer is deprecated. Please use tf.compat.v1.train.Optimizer instead.
W0914 09:43:10.981822 140240089409280 deprecation.py:323] From /root/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/math_grad.py:1250: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.where in 2.0, which has the same broadcast rule as np.where
Epoch 1/30
- 19s - loss: 0.5554 - acc: 0.8958 - val_loss: 0.3073 - val_acc: 0.9707
Epoch 2/30
- 12s - loss: 0.1966 - acc: 0.9566 - val_loss: 0.1294 - val_acc: 0.9815
Epoch 3/30
- 13s - loss: 0.1257 - acc: 0.9689 - val_loss: 0.1337 - val_acc: 0.9817
Epoch 4/30
- 12s - loss: 0.1069 - acc: 0.9740 - val_loss: 0.0717 - val_acc: 0.9871
Epoch 5/30
- 13s - loss: 0.1014 - acc: 0.9768 - val_loss: 0.0616 - val_acc: 0.9875
Epoch 6/30
- 12s - loss: 0.0942 - acc: 0.9792 - val_loss: 0.0549 - val_acc: 0.9881
Epoch 7/30
- 13s - loss: 0.0926 - acc: 0.9790 - val_loss: 0.0696 - val_acc: 0.9896
Epoch 8/30
- 13s - loss: 0.0939 - acc: 0.9791 - val_loss: 0.0530 - val_acc: 0.9915
Epoch 9/30
- 13s - loss: 0.0891 - acc: 0.9810 - val_loss: 0.0581 - val_acc: 0.9917
Epoch 10/30
- 12s - loss: 0.0996 - acc: 0.9806 - val_loss: 0.0514 - val_acc: 0.9920
Epoch 11/30
- 13s - loss: 0.0953 - acc: 0.9818 - val_loss: 0.0505 - val_acc: 0.9923
Epoch 12/30
- 13s - loss: 0.0998 - acc: 0.9815 - val_loss: 0.0642 - val_acc: 0.9913
Epoch 13/30
- 13s - loss: 0.0931 - acc: 0.9825 - val_loss: 0.0482 - val_acc: 0.9926
Epoch 14/30
- 13s - loss: 0.0910 - acc: 0.9826 - val_loss: 0.0467 - val_acc: 0.9930
Epoch 15/30
- 13s - loss: 0.0881 - acc: 0.9832 - val_loss: 0.0739 - val_acc: 0.9920
Epoch 16/30
- 13s - loss: 0.0870 - acc: 0.9836 - val_loss: 0.0677 - val_acc: 0.9899
Epoch 17/30
- 13s - loss: 0.0607 - acc: 0.9890 - val_loss: 0.0434 - val_acc: 0.9943
Epoch 18/30
- 13s - loss: 0.0498 - acc: 0.9907 - val_loss: 0.0434 - val_acc: 0.9946
Epoch 19/30
- 13s - loss: 0.0503 - acc: 0.9908 - val_loss: 0.0501 - val_acc: 0.9937
Epoch 20/30
- 13s - loss: 0.0438 - acc: 0.9912 - val_loss: 0.0391 - val_acc: 0.9952
Epoch 21/30
- 12s - loss: 0.0429 - acc: 0.9918 - val_loss: 0.0370 - val_acc: 0.9954
Epoch 22/30
- 13s - loss: 0.0418 - acc: 0.9922 - val_loss: 0.0394 - val_acc: 0.9950
Epoch 23/30
- 13s - loss: 0.0435 - acc: 0.9910 - val_loss: 0.0393 - val_acc: 0.9944
Epoch 24/30
- 13s - loss: 0.0398 - acc: 0.9920 - val_loss: 0.0372 - val_acc: 0.9949
Epoch 1/30
- 17s - loss: 0.9664 - acc: 0.9156 - val_loss: 1.0357 - val_acc: 0.9275
Epoch 2/30
- 13s - loss: 0.9532 - acc: 0.9346 - val_loss: 0.4416 - val_acc: 0.9712
Epoch 3/30
- 13s - loss: 0.9019 - acc: 0.9403 - val_loss: 0.8849 - val_acc: 0.9435
Epoch 4/30
- 13s - loss: 0.8870 - acc: 0.9428 - val_loss: 0.6445 - val_acc: 0.9587
Epoch 5/30
- 13s - loss: 0.5074 - acc: 0.9675 - val_loss: 0.3391 - val_acc: 0.9785
Epoch 6/30
- 13s - loss: 0.4676 - acc: 0.9701 - val_loss: 0.3290 - val_acc: 0.9786
Epoch 7/30
- 13s - loss: 0.4251 - acc: 0.9728 - val_loss: 0.3726 - val_acc: 0.9763
Epoch 8/30
- 13s - loss: 0.4235 - acc: 0.9729 - val_loss: 0.3774 - val_acc: 0.9758
Epoch 9/30
- 13s - loss: 0.3975 - acc: 0.9743 - val_loss: 0.2364 - val_acc: 0.9848
Epoch 10/30
- 13s - loss: 0.3164 - acc: 0.9796 - val_loss: 0.2160 - val_acc: 0.9863
Epoch 11/30
- 12s - loss: 0.2887 - acc: 0.9811 - val_loss: 0.2184 - val_acc: 0.9857
Epoch 12/30
- 13s - loss: 0.2726 - acc: 0.9821 - val_loss: 0.1987 - val_acc: 0.9870
Epoch 13/30
- 13s - loss: 0.2596 - acc: 0.9831 - val_loss: 0.2118 - val_acc: 0.9862
Epoch 14/30
- 13s - loss: 0.2464 - acc: 0.9840 - val_loss: 0.2148 - val_acc: 0.9863
Epoch 15/30
- 13s - loss: 0.2507 - acc: 0.9839 - val_loss: 0.1660 - val_acc: 0.9893
Epoch 16/30
- 13s - loss: 0.2186 - acc: 0.9856 - val_loss: 0.1904 - val_acc: 0.9880
Epoch 17/30
- 13s - loss: 0.2297 - acc: 0.9850 - val_loss: 0.1671 - val_acc: 0.9895
Epoch 18/30
- 13s - loss: 0.2243 - acc: 0.9854 - val_loss: 0.1535 - val_acc: 0.9899
Epoch 19/30
- 13s - loss: 0.2341 - acc: 0.9850 - val_loss: 0.1759 - val_acc: 0.9885
Epoch 20/30
- 13s - loss: 0.2328 - acc: 0.9850 - val_loss: 0.1490 - val_acc: 0.9902
Epoch 21/30
- 13s - loss: 0.2095 - acc: 0.9863 - val_loss: 0.1746 - val_acc: 0.9886
Epoch 22/30
- 13s - loss: 0.2244 - acc: 0.9855 - val_loss: 0.1477 - val_acc: 0.9904
Epoch 23/30
- 13s - loss: 0.2187 - acc: 0.9859 - val_loss: 0.1455 - val_acc: 0.9904
Epoch 24/30
- 13s - loss: 0.1993 - acc: 0.9871 - val_loss: 0.1623 - val_acc: 0.9896
Epoch 25/30
- 13s - loss: 0.2076 - acc: 0.9865 - val_loss: 0.1603 - val_acc: 0.9893
Epoch 26/30
- 13s - loss: 0.2081 - acc: 0.9866 - val_loss: 0.1567 - val_acc: 0.9900
Epoch 1/30
- 16s - loss: 0.4960 - acc: 0.8443 - val_loss: 0.0618 - val_acc: 0.9818
Epoch 2/30
- 13s - loss: 0.1609 - acc: 0.9529 - val_loss: 0.0576 - val_acc: 0.9845
Epoch 3/30
- 13s - loss: 0.1358 - acc: 0.9620 - val_loss: 0.0406 - val_acc: 0.9893
Epoch 4/30
- 13s - loss: 0.1236 - acc: 0.9657 - val_loss: 0.0579 - val_acc: 0.9869
Epoch 5/30
- 13s - loss: 0.1175 - acc: 0.9705 - val_loss: 0.0731 - val_acc: 0.9875
Epoch 6/30
- 13s - loss: 0.0870 - acc: 0.9771 - val_loss: 0.0348 - val_acc: 0.9919
Epoch 7/30
- 13s - loss: 0.0813 - acc: 0.9798 - val_loss: 0.0335 - val_acc: 0.9927
Epoch 8/30
- 13s - loss: 0.0744 - acc: 0.9815 - val_loss: 0.0335 - val_acc: 0.9923
Epoch 9/30
- 13s - loss: 0.0745 - acc: 0.9807 - val_loss: 0.0292 - val_acc: 0.9930
Epoch 10/30
- 13s - loss: 0.0695 - acc: 0.9824 - val_loss: 0.0333 - val_acc: 0.9920
Epoch 11/30
- 13s - loss: 0.0708 - acc: 0.9822 - val_loss: 0.0388 - val_acc: 0.9919
Epoch 12/30
- 13s - loss: 0.0655 - acc: 0.9843 - val_loss: 0.0257 - val_acc: 0.9938
Epoch 13/30
- 13s - loss: 0.0644 - acc: 0.9843 - val_loss: 0.0278 - val_acc: 0.9936
Epoch 14/30
- 13s - loss: 0.0645 - acc: 0.9845 - val_loss: 0.0263 - val_acc: 0.9942
Epoch 15/30
- 13s - loss: 0.0578 - acc: 0.9854 - val_loss: 0.0307 - val_acc: 0.9930
Epoch 1/30
- 17s - loss: 0.6574 - acc: 0.9177 - val_loss: 0.4988 - val_acc: 0.9615
Epoch 2/30
- 13s - loss: 0.5163 - acc: 0.9549 - val_loss: 0.4268 - val_acc: 0.9658
Epoch 3/30
- 13s - loss: 0.4795 - acc: 0.9609 - val_loss: 0.4681 - val_acc: 0.9636
Epoch 4/30
- 13s - loss: 0.4307 - acc: 0.9666 - val_loss: 0.3215 - val_acc: 0.9758
Epoch 5/30
- 13s - loss: 0.4220 - acc: 0.9670 - val_loss: 0.3196 - val_acc: 0.9764
Epoch 6/30
- 13s - loss: 0.3804 - acc: 0.9719 - val_loss: 0.4115 - val_acc: 0.9706
Epoch 7/30
- 13s - loss: 0.3977 - acc: 0.9716 - val_loss: 0.2873 - val_acc: 0.9792
Epoch 8/30
- 13s - loss: 0.4015 - acc: 0.9712 - val_loss: 0.3924 - val_acc: 0.9729
Epoch 9/30
- 13s - loss: 0.4319 - acc: 0.9701 - val_loss: 0.2615 - val_acc: 0.9820
Epoch 10/30
- 13s - loss: 0.4116 - acc: 0.9716 - val_loss: 0.5734 - val_acc: 0.9612
Epoch 11/30
- 13s - loss: 0.4008 - acc: 0.9729 - val_loss: 0.2799 - val_acc: 0.9815
Epoch 12/30
- 13s - loss: 0.2759 - acc: 0.9809 - val_loss: 0.1867 - val_acc: 0.9855
Epoch 13/30
- 13s - loss: 0.2192 - acc: 0.9846 - val_loss: 0.1530 - val_acc: 0.9898
Epoch 14/30
- 13s - loss: 0.1964 - acc: 0.9864 - val_loss: 0.1338 - val_acc: 0.9905
Epoch 15/30
- 14s - loss: 0.2035 - acc: 0.9860 - val_loss: 0.1199 - val_acc: 0.9917
Epoch 16/30
- 13s - loss: 0.1799 - acc: 0.9877 - val_loss: 0.1060 - val_acc: 0.9927
Epoch 17/30
- 13s - loss: 0.1713 - acc: 0.9882 - val_loss: 0.1342 - val_acc: 0.9908
Epoch 18/30
- 13s - loss: 0.1708 - acc: 0.9881 - val_loss: 0.1145 - val_acc: 0.9918
Epoch 19/30
- 13s - loss: 0.1475 - acc: 0.9896 - val_loss: 0.1034 - val_acc: 0.9927
Epoch 20/30
- 13s - loss: 0.1479 - acc: 0.9896 - val_loss: 0.0757 - val_acc: 0.9943
Epoch 21/30
- 13s - loss: 0.1301 - acc: 0.9908 - val_loss: 0.1102 - val_acc: 0.9926
Epoch 22/30
- 14s - loss: 0.1316 - acc: 0.9911 - val_loss: 0.0869 - val_acc: 0.9936
Epoch 23/30
- 13s - loss: 0.1329 - acc: 0.9905 - val_loss: 0.0835 - val_acc: 0.9943
Epoch 1/30
- 16s - loss: 1.0239 - acc: 0.6619 - val_loss: 0.1741 - val_acc: 0.9469
Epoch 2/30
- 13s - loss: 0.3178 - acc: 0.9034 - val_loss: 0.1258 - val_acc: 0.9625
Epoch 3/30
- 13s - loss: 0.2087 - acc: 0.9358 - val_loss: 0.0757 - val_acc: 0.9760
Epoch 4/30
- 13s - loss: 0.1657 - acc: 0.9510 - val_loss: 0.0638 - val_acc: 0.9807
Epoch 5/30
- 13s - loss: 0.1426 - acc: 0.9560 - val_loss: 0.0464 - val_acc: 0.9846
Epoch 6/30
- 13s - loss: 0.1204 - acc: 0.9629 - val_loss: 0.0570 - val_acc: 0.9827
Epoch 7/30
- 13s - loss: 0.1091 - acc: 0.9672 - val_loss: 0.0400 - val_acc: 0.9875
Epoch 8/30
- 13s - loss: 0.0976 - acc: 0.9707 - val_loss: 0.0722 - val_acc: 0.9795
Epoch 9/30
- 13s - loss: 0.0908 - acc: 0.9719 - val_loss: 0.0343 - val_acc: 0.9893
Epoch 10/30
- 13s - loss: 0.0882 - acc: 0.9729 - val_loss: 0.0390 - val_acc: 0.9892
Epoch 11/30
- 13s - loss: 0.0828 - acc: 0.9738 - val_loss: 0.0303 - val_acc: 0.9899
Epoch 12/30
- 13s - loss: 0.0747 - acc: 0.9774 - val_loss: 0.0358 - val_acc: 0.9885
Epoch 13/30
- 13s - loss: 0.0715 - acc: 0.9781 - val_loss: 0.0246 - val_acc: 0.9927
Epoch 14/30
- 13s - loss: 0.0714 - acc: 0.9785 - val_loss: 0.0246 - val_acc: 0.9930
Epoch 15/30
- 13s - loss: 0.0692 - acc: 0.9789 - val_loss: 0.0283 - val_acc: 0.9902
Epoch 16/30
- 13s - loss: 0.0624 - acc: 0.9810 - val_loss: 0.0243 - val_acc: 0.9929
Epoch 17/30
- 13s - loss: 0.0549 - acc: 0.9827 - val_loss: 0.0229 - val_acc: 0.9923
Epoch 18/30
- 13s - loss: 0.0588 - acc: 0.9823 - val_loss: 0.0220 - val_acc: 0.9924
Epoch 19/30
- 14s - loss: 0.0565 - acc: 0.9834 - val_loss: 0.0212 - val_acc: 0.9932
Epoch 20/30
- 13s - loss: 0.0563 - acc: 0.9834 - val_loss: 0.0254 - val_acc: 0.9917
Epoch 21/30
- 13s - loss: 0.0544 - acc: 0.9833 - val_loss: 0.0199 - val_acc: 0.9939
Epoch 22/30
- 13s - loss: 0.0542 - acc: 0.9838 - val_loss: 0.0233 - val_acc: 0.9921
Epoch 23/30
- 13s - loss: 0.0541 - acc: 0.9843 - val_loss: 0.0231 - val_acc: 0.9918
Epoch 24/30
- 13s - loss: 0.0509 - acc: 0.9843 - val_loss: 0.0206 - val_acc: 0.9935
Epoch 1/30
- 21s - loss: 1.6756 - acc: 0.8689 - val_loss: 0.6940 - val_acc: 0.9527
Epoch 2/30
- 16s - loss: 0.9866 - acc: 0.9319 - val_loss: 0.9049 - val_acc: 0.9394
Epoch 3/30
- 16s - loss: 0.8665 - acc: 0.9422 - val_loss: 0.5904 - val_acc: 0.9614
Epoch 4/30
- 16s - loss: 0.7071 - acc: 0.9529 - val_loss: 0.5167 - val_acc: 0.9655
Epoch 5/30
- 16s - loss: 0.6586 - acc: 0.9566 - val_loss: 0.4366 - val_acc: 0.9713
Epoch 6/30
- 16s - loss: 0.6200 - acc: 0.9591 - val_loss: 0.7137 - val_acc: 0.9533
Epoch 7/30
- 16s - loss: 0.6694 - acc: 0.9563 - val_loss: 0.6443 - val_acc: 0.9577
Epoch 8/30
- 16s - loss: 0.4908 - acc: 0.9680 - val_loss: 0.2523 - val_acc: 0.9833
Epoch 9/30
- 16s - loss: 0.3721 - acc: 0.9758 - val_loss: 0.2367 - val_acc: 0.9845
Epoch 10/30
- 16s - loss: 0.3498 - acc: 0.9773 - val_loss: 0.1804 - val_acc: 0.9886
Epoch 11/30
- 16s - loss: 0.3272 - acc: 0.9785 - val_loss: 0.2229 - val_acc: 0.9852
Epoch 12/30
- 16s - loss: 0.2959 - acc: 0.9803 - val_loss: 0.1800 - val_acc: 0.9883
Epoch 13/30
- 16s - loss: 0.2873 - acc: 0.9805 - val_loss: 0.1722 - val_acc: 0.9888
Epoch 14/30
- 16s - loss: 0.2762 - acc: 0.9816 - val_loss: 0.1621 - val_acc: 0.9894
Epoch 15/30
- 17s - loss: 0.2464 - acc: 0.9833 - val_loss: 0.1692 - val_acc: 0.9889
Epoch 16/30
- 16s - loss: 0.2348 - acc: 0.9846 - val_loss: 0.1621 - val_acc: 0.9893
Epoch 17/30
- 17s - loss: 0.2236 - acc: 0.9852 - val_loss: 0.1422 - val_acc: 0.9899
Epoch 18/30
- 16s - loss: 0.2178 - acc: 0.9859 - val_loss: 0.1475 - val_acc: 0.9902
Epoch 19/30
- 16s - loss: 0.2072 - acc: 0.9863 - val_loss: 0.1584 - val_acc: 0.9893
Epoch 20/30
- 16s - loss: 0.2196 - acc: 0.9855 - val_loss: 0.1343 - val_acc: 0.9915
Epoch 21/30
- 16s - loss: 0.2013 - acc: 0.9865 - val_loss: 0.1432 - val_acc: 0.9905
Epoch 22/30
- 16s - loss: 0.2084 - acc: 0.9862 - val_loss: 0.1349 - val_acc: 0.9914
Epoch 23/30
- 16s - loss: 0.1891 - acc: 0.9876 - val_loss: 0.1285 - val_acc: 0.9919
Epoch 24/30
- 16s - loss: 0.1852 - acc: 0.9876 - val_loss: 0.1296 - val_acc: 0.9914
Epoch 25/30
- 16s - loss: 0.1986 - acc: 0.9869 - val_loss: 0.1462 - val_acc: 0.9904
Epoch 26/30
- 16s - loss: 0.1874 - acc: 0.9875 - val_loss: 0.1469 - val_acc: 0.9902
Epoch 1/30
- 18s - loss: 0.4874 - acc: 0.8507 - val_loss: 0.0734 - val_acc: 0.9785
Epoch 2/30
- 14s - loss: 0.1627 - acc: 0.9520 - val_loss: 0.0551 - val_acc: 0.9848
Epoch 3/30
- 13s - loss: 0.1213 - acc: 0.9635 - val_loss: 0.0511 - val_acc: 0.9852
Epoch 4/30
- 13s - loss: 0.1058 - acc: 0.9686 - val_loss: 0.0297 - val_acc: 0.9915
Epoch 5/30
- 13s - loss: 0.0947 - acc: 0.9731 - val_loss: 0.0390 - val_acc: 0.9886
Epoch 6/30
- 13s - loss: 0.0860 - acc: 0.9751 - val_loss: 0.0375 - val_acc: 0.9899
Epoch 7/30
- 14s - loss: 0.0648 - acc: 0.9811 - val_loss: 0.0277 - val_acc: 0.9926
Epoch 8/30
- 13s - loss: 0.0540 - acc: 0.9843 - val_loss: 0.0250 - val_acc: 0.9925
Epoch 9/30
- 13s - loss: 0.0470 - acc: 0.9855 - val_loss: 0.0227 - val_acc: 0.9936
Epoch 10/30
- 14s - loss: 0.0455 - acc: 0.9862 - val_loss: 0.0196 - val_acc: 0.9945
Epoch 11/30
- 13s - loss: 0.0438 - acc: 0.9861 - val_loss: 0.0210 - val_acc: 0.9940
Epoch 12/30
- 13s - loss: 0.0485 - acc: 0.9857 - val_loss: 0.0204 - val_acc: 0.9943
Epoch 13/30
- 13s - loss: 0.0386 - acc: 0.9881 - val_loss: 0.0179 - val_acc: 0.9950
Epoch 14/30
- 13s - loss: 0.0382 - acc: 0.9888 - val_loss: 0.0175 - val_acc: 0.9949
Epoch 15/30
- 13s - loss: 0.0364 - acc: 0.9882 - val_loss: 0.0174 - val_acc: 0.9948
Epoch 16/30
- 14s - loss: 0.0341 - acc: 0.9901 - val_loss: 0.0169 - val_acc: 0.9949
Epoch 17/30
- 13s - loss: 0.0316 - acc: 0.9904 - val_loss: 0.0167 - val_acc: 0.9950
Epoch 18/30
- 13s - loss: 0.0334 - acc: 0.9894 - val_loss: 0.0177 - val_acc: 0.9946
Epoch 19/30
- 13s - loss: 0.0315 - acc: 0.9901 - val_loss: 0.0156 - val_acc: 0.9956
Epoch 20/30
- 13s - loss: 0.0322 - acc: 0.9901 - val_loss: 0.0156 - val_acc: 0.9955
Epoch 21/30
- 14s - loss: 0.0317 - acc: 0.9900 - val_loss: 0.0161 - val_acc: 0.9951
Epoch 22/30
- 13s - loss: 0.0296 - acc: 0.9907 - val_loss: 0.0158 - val_acc: 0.9952
Epoch 1/30
- 18s - loss: 0.3462 - acc: 0.9129 - val_loss: 0.1458 - val_acc: 0.9729
Epoch 2/30
- 13s - loss: 0.1845 - acc: 0.9618 - val_loss: 0.0830 - val_acc: 0.9860
Epoch 3/30
- 13s - loss: 0.1356 - acc: 0.9715 - val_loss: 0.1129 - val_acc: 0.9831
Epoch 4/30
- 13s - loss: 0.1069 - acc: 0.9760 - val_loss: 0.0834 - val_acc: 0.9871
Epoch 5/30
- 13s - loss: 0.0581 - acc: 0.9861 - val_loss: 0.0468 - val_acc: 0.9913
Epoch 6/30
- 14s - loss: 0.0424 - acc: 0.9898 - val_loss: 0.0324 - val_acc: 0.9935
Epoch 7/30
- 13s - loss: 0.0442 - acc: 0.9894 - val_loss: 0.0333 - val_acc: 0.9924
Epoch 8/30
- 13s - loss: 0.0409 - acc: 0.9897 - val_loss: 0.0352 - val_acc: 0.9931
Epoch 9/30
- 13s - loss: 0.0290 - acc: 0.9924 - val_loss: 0.0237 - val_acc: 0.9957
Epoch 10/30
- 13s - loss: 0.0288 - acc: 0.9921 - val_loss: 0.0321 - val_acc: 0.9939
Epoch 11/30
- 13s - loss: 0.0274 - acc: 0.9929 - val_loss: 0.0220 - val_acc: 0.9950
Epoch 12/30
- 13s - loss: 0.0283 - acc: 0.9926 - val_loss: 0.0276 - val_acc: 0.9939
Epoch 13/30
- 14s - loss: 0.0256 - acc: 0.9936 - val_loss: 0.0314 - val_acc: 0.9938
Epoch 14/30
- 13s - loss: 0.0232 - acc: 0.9933 - val_loss: 0.0233 - val_acc: 0.9950
Epoch 1/30
- 18s - loss: 0.3839 - acc: 0.8764 - val_loss: 0.0678 - val_acc: 0.9785
Epoch 2/30
- 14s - loss: 0.1337 - acc: 0.9584 - val_loss: 0.0516 - val_acc: 0.9854
Epoch 3/30
- 14s - loss: 0.0955 - acc: 0.9709 - val_loss: 0.0440 - val_acc: 0.9860
Epoch 4/30
- 14s - loss: 0.0857 - acc: 0.9727 - val_loss: 0.0462 - val_acc: 0.9871
Epoch 5/30
- 13s - loss: 0.0698 - acc: 0.9782 - val_loss: 0.0304 - val_acc: 0.9906
Epoch 6/30
- 13s - loss: 0.0649 - acc: 0.9798 - val_loss: 0.0359 - val_acc: 0.9883
Epoch 7/30
- 13s - loss: 0.0567 - acc: 0.9825 - val_loss: 0.0320 - val_acc: 0.9907
Epoch 8/30
- 13s - loss: 0.0552 - acc: 0.9828 - val_loss: 0.0288 - val_acc: 0.9917
Epoch 9/30
- 13s - loss: 0.0521 - acc: 0.9838 - val_loss: 0.0326 - val_acc: 0.9902
Epoch 10/30
- 14s - loss: 0.0494 - acc: 0.9841 - val_loss: 0.0233 - val_acc: 0.9918
Epoch 11/30
- 14s - loss: 0.0481 - acc: 0.9846 - val_loss: 0.0287 - val_acc: 0.9906
Epoch 12/30
- 13s - loss: 0.0479 - acc: 0.9842 - val_loss: 0.0230 - val_acc: 0.9927
Epoch 13/30
- 14s - loss: 0.0464 - acc: 0.9851 - val_loss: 0.0315 - val_acc: 0.9906
Epoch 14/30
- 13s - loss: 0.0437 - acc: 0.9864 - val_loss: 0.0236 - val_acc: 0.9930
Epoch 15/30
- 13s - loss: 0.0456 - acc: 0.9852 - val_loss: 0.0273 - val_acc: 0.9910
Epoch 1/30
- 19s - loss: 0.6171 - acc: 0.7981 - val_loss: 0.1144 - val_acc: 0.9661
Epoch 2/30
- 13s - loss: 0.2044 - acc: 0.9350 - val_loss: 0.0610 - val_acc: 0.9804
Epoch 3/30
- 14s - loss: 0.1512 - acc: 0.9518 - val_loss: 0.0584 - val_acc: 0.9808
Epoch 4/30
- 13s - loss: 0.1247 - acc: 0.9606 - val_loss: 0.0534 - val_acc: 0.9819
Epoch 5/30
- 13s - loss: 0.1093 - acc: 0.9651 - val_loss: 0.0426 - val_acc: 0.9857
Epoch 6/30
- 13s - loss: 0.0970 - acc: 0.9692 - val_loss: 0.0425 - val_acc: 0.9870
Epoch 7/30
- 13s - loss: 0.0880 - acc: 0.9725 - val_loss: 0.0396 - val_acc: 0.9879
Epoch 8/30
- 13s - loss: 0.0840 - acc: 0.9735 - val_loss: 0.0314 - val_acc: 0.9896
Epoch 9/30
- 14s - loss: 0.0759 - acc: 0.9761 - val_loss: 0.0391 - val_acc: 0.9874
Epoch 10/30
- 14s - loss: 0.0720 - acc: 0.9776 - val_loss: 0.0279 - val_acc: 0.9901
Epoch 11/30
- 13s - loss: 0.0696 - acc: 0.9781 - val_loss: 0.0369 - val_acc: 0.9905
Epoch 12/30
- 13s - loss: 0.0696 - acc: 0.9785 - val_loss: 0.0271 - val_acc: 0.9918
Epoch 13/30
- 13s - loss: 0.0616 - acc: 0.9807 - val_loss: 0.0255 - val_acc: 0.9923
Epoch 14/30
- 13s - loss: 0.0615 - acc: 0.9802 - val_loss: 0.0263 - val_acc: 0.9915
Epoch 15/30
- 13s - loss: 0.0568 - acc: 0.9817 - val_loss: 0.0287 - val_acc: 0.9917
Epoch 16/30
- 13s - loss: 0.0584 - acc: 0.9819 - val_loss: 0.0257 - val_acc: 0.9920
Epoch 1/30
- 20s - loss: 0.4689 - acc: 0.8664 - val_loss: 0.1439 - val_acc: 0.9642
Epoch 2/30
- 14s - loss: 0.1875 - acc: 0.9494 - val_loss: 0.0653 - val_acc: 0.9775
Epoch 3/30
- 13s - loss: 0.1474 - acc: 0.9587 - val_loss: 0.0494 - val_acc: 0.9864
Epoch 4/30
- 14s - loss: 0.1163 - acc: 0.9664 - val_loss: 0.0449 - val_acc: 0.9868
Epoch 5/30
- 14s - loss: 0.1085 - acc: 0.9690 - val_loss: 0.0532 - val_acc: 0.9832
Epoch 6/30
- 14s - loss: 0.0968 - acc: 0.9724 - val_loss: 0.0390 - val_acc: 0.9882
Epoch 7/30
- 14s - loss: 0.0925 - acc: 0.9725 - val_loss: 0.0324 - val_acc: 0.9894
Epoch 8/30
- 13s - loss: 0.0977 - acc: 0.9727 - val_loss: 0.0340 - val_acc: 0.9888
Epoch 9/30
- 14s - loss: 0.0794 - acc: 0.9767 - val_loss: 0.0294 - val_acc: 0.9911
Epoch 10/30
- 14s - loss: 0.0838 - acc: 0.9761 - val_loss: 0.0540 - val_acc: 0.9869
Epoch 11/30
- 13s - loss: 0.0861 - acc: 0.9764 - val_loss: 0.0399 - val_acc: 0.9877
Epoch 12/30
- 14s - loss: 0.0607 - acc: 0.9826 - val_loss: 0.0260 - val_acc: 0.9929
Epoch 13/30
- 14s - loss: 0.0481 - acc: 0.9857 - val_loss: 0.0257 - val_acc: 0.9930
Epoch 14/30
- 14s - loss: 0.0441 - acc: 0.9870 - val_loss: 0.0216 - val_acc: 0.9935
Epoch 15/30
- 13s - loss: 0.0450 - acc: 0.9864 - val_loss: 0.0249 - val_acc: 0.9933
Epoch 16/30
- 14s - loss: 0.0427 - acc: 0.9875 - val_loss: 0.0283 - val_acc: 0.9921
Epoch 17/30
- 14s - loss: 0.0367 - acc: 0.9886 - val_loss: 0.0209 - val_acc: 0.9939
Epoch 18/30
- 14s - loss: 0.0334 - acc: 0.9902 - val_loss: 0.0223 - val_acc: 0.9937
Epoch 19/30
- 14s - loss: 0.0329 - acc: 0.9901 - val_loss: 0.0224 - val_acc: 0.9948
Epoch 20/30
- 14s - loss: 0.0328 - acc: 0.9903 - val_loss: 0.0203 - val_acc: 0.9942
Epoch 21/30
- 14s - loss: 0.0333 - acc: 0.9900 - val_loss: 0.0223 - val_acc: 0.9943
Epoch 22/30
- 14s - loss: 0.0297 - acc: 0.9911 - val_loss: 0.0177 - val_acc: 0.9946
Epoch 23/30
- 14s - loss: 0.0312 - acc: 0.9912 - val_loss: 0.0224 - val_acc: 0.9944
Epoch 24/30
- 13s - loss: 0.0291 - acc: 0.9914 - val_loss: 0.0213 - val_acc: 0.9943
Epoch 25/30
- 14s - loss: 0.0279 - acc: 0.9909 - val_loss: 0.0183 - val_acc: 0.9948
Epoch 1/30
- 21s - loss: 0.2754 - acc: 0.9363 - val_loss: 0.2048 - val_acc: 0.9676
Epoch 2/30
- 14s - loss: 0.1504 - acc: 0.9709 - val_loss: 0.0826 - val_acc: 0.9850
Epoch 3/30
- 14s - loss: 0.1017 - acc: 0.9784 - val_loss: 0.0567 - val_acc: 0.9879
Epoch 4/30
- 14s - loss: 0.0885 - acc: 0.9801 - val_loss: 0.0714 - val_acc: 0.9887
Epoch 5/30
- 14s - loss: 0.0720 - acc: 0.9837 - val_loss: 0.0469 - val_acc: 0.9913
Epoch 6/30
- 14s - loss: 0.0533 - acc: 0.9864 - val_loss: 0.0590 - val_acc: 0.9904
Epoch 7/30
- 14s - loss: 0.0631 - acc: 0.9846 - val_loss: 0.0561 - val_acc: 0.9894
Epoch 8/30
- 14s - loss: 0.0353 - acc: 0.9910 - val_loss: 0.0250 - val_acc: 0.9939
Epoch 9/30
- 14s - loss: 0.0225 - acc: 0.9934 - val_loss: 0.0235 - val_acc: 0.9948
Epoch 10/30
- 14s - loss: 0.0220 - acc: 0.9938 - val_loss: 0.0243 - val_acc: 0.9936
Epoch 11/30
- 14s - loss: 0.0184 - acc: 0.9943 - val_loss: 0.0210 - val_acc: 0.9946
Epoch 12/30
- 14s - loss: 0.0161 - acc: 0.9952 - val_loss: 0.0205 - val_acc: 0.9950
Epoch 13/30
- 14s - loss: 0.0192 - acc: 0.9942 - val_loss: 0.0242 - val_acc: 0.9935
Epoch 14/30
- 14s - loss: 0.0190 - acc: 0.9943 - val_loss: 0.0245 - val_acc: 0.9945
Epoch 15/30
- 14s - loss: 0.0137 - acc: 0.9960 - val_loss: 0.0218 - val_acc: 0.9954
Epoch 1/30
- 22s - loss: 0.5127 - acc: 0.8815 - val_loss: 0.3727 - val_acc: 0.9604
Epoch 2/30
- 15s - loss: 0.2329 - acc: 0.9503 - val_loss: 0.1801 - val_acc: 0.9793
Epoch 3/30
- 14s - loss: 0.1848 - acc: 0.9592 - val_loss: 0.1309 - val_acc: 0.9751
Epoch 4/30
- 14s - loss: 0.1597 - acc: 0.9665 - val_loss: 0.1286 - val_acc: 0.9854
Epoch 5/30
- 14s - loss: 0.1513 - acc: 0.9687 - val_loss: 0.1181 - val_acc: 0.9815
Epoch 6/30
- 14s - loss: 0.1572 - acc: 0.9696 - val_loss: 0.0928 - val_acc: 0.9892
Epoch 7/30
- 14s - loss: 0.1491 - acc: 0.9701 - val_loss: 0.1040 - val_acc: 0.9886
Epoch 8/30
- 14s - loss: 0.1456 - acc: 0.9723 - val_loss: 0.0903 - val_acc: 0.9904
Epoch 9/30
- 14s - loss: 0.1502 - acc: 0.9740 - val_loss: 0.0797 - val_acc: 0.9887
Epoch 10/30
- 14s - loss: 0.1533 - acc: 0.9745 - val_loss: 0.0630 - val_acc: 0.9923
Epoch 11/30
- 14s - loss: 0.1473 - acc: 0.9753 - val_loss: 0.1024 - val_acc: 0.9867
Epoch 12/30
- 14s - loss: 0.1444 - acc: 0.9773 - val_loss: 0.0659 - val_acc: 0.9910
Epoch 13/30
- 15s - loss: 0.1214 - acc: 0.9816 - val_loss: 0.0496 - val_acc: 0.9939
Epoch 14/30
- 14s - loss: 0.1000 - acc: 0.9836 - val_loss: 0.0544 - val_acc: 0.9937
Epoch 15/30
- 14s - loss: 0.0914 - acc: 0.9850 - val_loss: 0.0555 - val_acc: 0.9942
Epoch 16/30
- 14s - loss: 0.0852 - acc: 0.9862 - val_loss: 0.0532 - val_acc: 0.9943
Epoch 1/30
- 23s - loss: 0.2821 - acc: 0.9110 - val_loss: 0.0573 - val_acc: 0.9829
Epoch 2/30
- 15s - loss: 0.1029 - acc: 0.9681 - val_loss: 0.0449 - val_acc: 0.9864
Epoch 3/30
- 15s - loss: 0.0820 - acc: 0.9738 - val_loss: 0.0434 - val_acc: 0.9875
Epoch 4/30
- 15s - loss: 0.0646 - acc: 0.9794 - val_loss: 0.0297 - val_acc: 0.9911
Epoch 5/30
- 15s - loss: 0.0583 - acc: 0.9808 - val_loss: 0.0317 - val_acc: 0.9895
Epoch 6/30
- 15s - loss: 0.0523 - acc: 0.9835 - val_loss: 0.0316 - val_acc: 0.9892
Epoch 7/30
- 15s - loss: 0.0454 - acc: 0.9856 - val_loss: 0.0255 - val_acc: 0.9915
Epoch 8/30
- 15s - loss: 0.0411 - acc: 0.9875 - val_loss: 0.0258 - val_acc: 0.9923
Epoch 9/30
- 15s - loss: 0.0403 - acc: 0.9874 - val_loss: 0.0236 - val_acc: 0.9919
Epoch 10/30
- 15s - loss: 0.0389 - acc: 0.9885 - val_loss: 0.0235 - val_acc: 0.9926
Epoch 11/30
- 15s - loss: 0.0398 - acc: 0.9875 - val_loss: 0.0253 - val_acc: 0.9917
Epoch 12/30
- 15s - loss: 0.0369 - acc: 0.9885 - val_loss: 0.0241 - val_acc: 0.9924
Epoch 13/30
- 15s - loss: 0.0343 - acc: 0.9890 - val_loss: 0.0221 - val_acc: 0.9927
Epoch 14/30
- 15s - loss: 0.0374 - acc: 0.9882 - val_loss: 0.0223 - val_acc: 0.9927
Epoch 15/30
- 15s - loss: 0.0373 - acc: 0.9885 - val_loss: 0.0216 - val_acc: 0.9935
Epoch 16/30
- 15s - loss: 0.0343 - acc: 0.9896 - val_loss: 0.0230 - val_acc: 0.9927
Epoch 17/30
- 15s - loss: 0.0354 - acc: 0.9885 - val_loss: 0.0234 - val_acc: 0.9921
Epoch 18/30
- 15s - loss: 0.0331 - acc: 0.9893 - val_loss: 0.0208 - val_acc: 0.9932
Epoch 19/30
- 15s - loss: 0.0372 - acc: 0.9885 - val_loss: 0.0216 - val_acc: 0.9930
Epoch 20/30
- 15s - loss: 0.0348 - acc: 0.9892 - val_loss: 0.0246 - val_acc: 0.9924
Epoch 21/30
- 15s - loss: 0.0339 - acc: 0.9897 - val_loss: 0.0187 - val_acc: 0.9933
Epoch 22/30
- 15s - loss: 0.0334 - acc: 0.9889 - val_loss: 0.0232 - val_acc: 0.9929
Epoch 23/30
- 15s - loss: 0.0348 - acc: 0.9891 - val_loss: 0.0198 - val_acc: 0.9936
Epoch 24/30
- 15s - loss: 0.0333 - acc: 0.9894 - val_loss: 0.0234 - val_acc: 0.9925
Epoch 1/30
- 27s - loss: 0.5423 - acc: 0.8826 - val_loss: 0.3249 - val_acc: 0.9565
Epoch 2/30
- 18s - loss: 0.2459 - acc: 0.9502 - val_loss: 0.1190 - val_acc: 0.9810
Epoch 3/30
- 18s - loss: 0.1682 - acc: 0.9612 - val_loss: 0.0814 - val_acc: 0.9854
Epoch 4/30
- 18s - loss: 0.1362 - acc: 0.9669 - val_loss: 0.0607 - val_acc: 0.9879
Epoch 5/30
- 18s - loss: 0.1351 - acc: 0.9674 - val_loss: 0.0900 - val_acc: 0.9830
Epoch 6/30
- 18s - loss: 0.1263 - acc: 0.9684 - val_loss: 0.1372 - val_acc: 0.9761
Epoch 7/30
- 18s - loss: 0.0803 - acc: 0.9800 - val_loss: 0.0233 - val_acc: 0.9933
Epoch 8/30
- 18s - loss: 0.0620 - acc: 0.9839 - val_loss: 0.0246 - val_acc: 0.9949
Epoch 9/30
- 18s - loss: 0.0544 - acc: 0.9857 - val_loss: 0.0291 - val_acc: 0.9933
Epoch 10/30
- 18s - loss: 0.0541 - acc: 0.9865 - val_loss: 0.0289 - val_acc: 0.9931
Epoch 1/30
- 23s - loss: 0.3664 - acc: 0.9165 - val_loss: 0.2863 - val_acc: 0.9715
Epoch 2/30
- 14s - loss: 0.1919 - acc: 0.9632 - val_loss: 0.1237 - val_acc: 0.9845
Epoch 3/30
- 14s - loss: 0.1414 - acc: 0.9721 - val_loss: 0.1344 - val_acc: 0.9815
Epoch 4/30
- 14s - loss: 0.1246 - acc: 0.9755 - val_loss: 0.0732 - val_acc: 0.9894
Epoch 5/30
- 14s - loss: 0.1027 - acc: 0.9784 - val_loss: 0.2016 - val_acc: 0.9810
Epoch 6/30
- 14s - loss: 0.1106 - acc: 0.9785 - val_loss: 0.0675 - val_acc: 0.9888
Epoch 7/30
- 14s - loss: 0.1039 - acc: 0.9795 - val_loss: 0.0651 - val_acc: 0.9910
Epoch 8/30
- 14s - loss: 0.0937 - acc: 0.9821 - val_loss: 0.0638 - val_acc: 0.9911
Epoch 9/30
- 14s - loss: 0.0894 - acc: 0.9838 - val_loss: 0.1246 - val_acc: 0.9861
Epoch 10/30
- 14s - loss: 0.0872 - acc: 0.9834 - val_loss: 0.0754 - val_acc: 0.9921
Epoch 11/30
- 14s - loss: 0.0593 - acc: 0.9880 - val_loss: 0.0526 - val_acc: 0.9929
Epoch 12/30
- 14s - loss: 0.0509 - acc: 0.9902 - val_loss: 0.0538 - val_acc: 0.9937
Epoch 13/30
- 13s - loss: 0.0484 - acc: 0.9904 - val_loss: 0.0543 - val_acc: 0.9945
Epoch 14/30
- 14s - loss: 0.0418 - acc: 0.9915 - val_loss: 0.0444 - val_acc: 0.9956
Epoch 15/30
- 14s - loss: 0.0347 - acc: 0.9926 - val_loss: 0.0417 - val_acc: 0.9954
Epoch 16/30
- 14s - loss: 0.0357 - acc: 0.9925 - val_loss: 0.0501 - val_acc: 0.9949
Epoch 17/30
- 14s - loss: 0.0323 - acc: 0.9934 - val_loss: 0.0360 - val_acc: 0.9964
Epoch 18/30
- 14s - loss: 0.0322 - acc: 0.9933 - val_loss: 0.0428 - val_acc: 0.9956
Epoch 19/30
- 14s - loss: 0.0341 - acc: 0.9940 - val_loss: 0.0427 - val_acc: 0.9951
Epoch 20/30
- 14s - loss: 0.0329 - acc: 0.9933 - val_loss: 0.0440 - val_acc: 0.9950
Epoch 1/30
- 23s - loss: 0.7654 - acc: 0.7562 - val_loss: 0.1295 - val_acc: 0.9629
Epoch 2/30
- 14s - loss: 0.2781 - acc: 0.9148 - val_loss: 0.0799 - val_acc: 0.9763
Epoch 3/30
- 14s - loss: 0.1998 - acc: 0.9381 - val_loss: 0.0516 - val_acc: 0.9840
Epoch 4/30
- 14s - loss: 0.1668 - acc: 0.9499 - val_loss: 0.0578 - val_acc: 0.9817
Epoch 5/30
- 14s - loss: 0.1403 - acc: 0.9565 - val_loss: 0.0448 - val_acc: 0.9863
Epoch 6/30
- 14s - loss: 0.1217 - acc: 0.9631 - val_loss: 0.0367 - val_acc: 0.9879
Epoch 7/30
- 14s - loss: 0.1095 - acc: 0.9655 - val_loss: 0.0386 - val_acc: 0.9869
Epoch 8/30
- 14s - loss: 0.1114 - acc: 0.9677 - val_loss: 0.0338 - val_acc: 0.9890
Epoch 9/30
- 14s - loss: 0.1009 - acc: 0.9693 - val_loss: 0.0353 - val_acc: 0.9894
Epoch 10/30
- 14s - loss: 0.0920 - acc: 0.9721 - val_loss: 0.0337 - val_acc: 0.9894
Epoch 11/30
- 14s - loss: 0.0882 - acc: 0.9727 - val_loss: 0.0312 - val_acc: 0.9914
Epoch 12/30
- 14s - loss: 0.0813 - acc: 0.9754 - val_loss: 0.0303 - val_acc: 0.9907
Epoch 13/30
- 14s - loss: 0.0836 - acc: 0.9750 - val_loss: 0.0273 - val_acc: 0.9918
Epoch 14/30
- 14s - loss: 0.0807 - acc: 0.9765 - val_loss: 0.0306 - val_acc: 0.9914
Epoch 15/30
- 14s - loss: 0.0722 - acc: 0.9780 - val_loss: 0.0309 - val_acc: 0.9913
Epoch 16/30
- 14s - loss: 0.0743 - acc: 0.9776 - val_loss: 0.0241 - val_acc: 0.9932
Epoch 17/30
- 14s - loss: 0.0655 - acc: 0.9806 - val_loss: 0.0246 - val_acc: 0.9924
Epoch 18/30
- 14s - loss: 0.0690 - acc: 0.9792 - val_loss: 0.0235 - val_acc: 0.9936
Epoch 19/30
- 14s - loss: 0.0667 - acc: 0.9797 - val_loss: 0.0243 - val_acc: 0.9927
Epoch 20/30
- 14s - loss: 0.0677 - acc: 0.9796 - val_loss: 0.0275 - val_acc: 0.9924
Epoch 21/30
- 14s - loss: 0.0658 - acc: 0.9801 - val_loss: 0.0198 - val_acc: 0.9942
Epoch 22/30
- 14s - loss: 0.0663 - acc: 0.9799 - val_loss: 0.0246 - val_acc: 0.9929
Epoch 23/30
- 14s - loss: 0.0644 - acc: 0.9807 - val_loss: 0.0273 - val_acc: 0.9923
Epoch 24/30
- 14s - loss: 0.0650 - acc: 0.9798 - val_loss: 0.0184 - val_acc: 0.9943
Epoch 25/30
- 14s - loss: 0.0635 - acc: 0.9806 - val_loss: 0.0275 - val_acc: 0.9924
Epoch 26/30
- 14s - loss: 0.0636 - acc: 0.9811 - val_loss: 0.0245 - val_acc: 0.9927
Epoch 27/30
- 14s - loss: 0.0599 - acc: 0.9817 - val_loss: 0.0225 - val_acc: 0.9935
Epoch 1/30
- 24s - loss: 0.3980 - acc: 0.8750 - val_loss: 0.0950 - val_acc: 0.9718
Epoch 2/30
- 14s - loss: 0.1621 - acc: 0.9497 - val_loss: 0.0514 - val_acc: 0.9833
Epoch 3/30
- 14s - loss: 0.1247 - acc: 0.9618 - val_loss: 0.0448 - val_acc: 0.9846
Epoch 4/30
- 14s - loss: 0.1068 - acc: 0.9671 - val_loss: 0.0344 - val_acc: 0.9882
Epoch 5/30
- 14s - loss: 0.0898 - acc: 0.9729 - val_loss: 0.0422 - val_acc: 0.9873
Epoch 6/30
- 14s - loss: 0.0751 - acc: 0.9761 - val_loss: 0.0293 - val_acc: 0.9908
Epoch 7/30
- 14s - loss: 0.0708 - acc: 0.9783 - val_loss: 0.0334 - val_acc: 0.9904
Epoch 8/30
- 14s - loss: 0.0696 - acc: 0.9784 - val_loss: 0.0306 - val_acc: 0.9900
Epoch 9/30
- 15s - loss: 0.0629 - acc: 0.9807 - val_loss: 0.0280 - val_acc: 0.9912
Epoch 10/30
- 14s - loss: 0.0558 - acc: 0.9829 - val_loss: 0.0236 - val_acc: 0.9935
Epoch 11/30
- 14s - loss: 0.0570 - acc: 0.9826 - val_loss: 0.0267 - val_acc: 0.9915
Epoch 12/30
- 14s - loss: 0.0530 - acc: 0.9837 - val_loss: 0.0240 - val_acc: 0.9926
Epoch 13/30
- 14s - loss: 0.0493 - acc: 0.9849 - val_loss: 0.0239 - val_acc: 0.9926
Epoch 1/30
- 24s - loss: 0.4408 - acc: 0.8600 - val_loss: 0.1750 - val_acc: 0.9555
Epoch 2/30
- 14s - loss: 0.1783 - acc: 0.9471 - val_loss: 0.1170 - val_acc: 0.9671
Epoch 3/30
- 14s - loss: 0.1328 - acc: 0.9591 - val_loss: 0.0642 - val_acc: 0.9825
Epoch 4/30
- 15s - loss: 0.1175 - acc: 0.9656 - val_loss: 0.0693 - val_acc: 0.9798
Epoch 5/30
- 14s - loss: 0.1004 - acc: 0.9695 - val_loss: 0.0393 - val_acc: 0.9877
Epoch 6/30
- 14s - loss: 0.0913 - acc: 0.9726 - val_loss: 0.0270 - val_acc: 0.9929
Epoch 7/30
- 15s - loss: 0.0869 - acc: 0.9737 - val_loss: 0.0312 - val_acc: 0.9901
Epoch 8/30
- 14s - loss: 0.0786 - acc: 0.9759 - val_loss: 0.0509 - val_acc: 0.9844
Epoch 9/30
- 14s - loss: 0.0578 - acc: 0.9821 - val_loss: 0.0218 - val_acc: 0.9937
Epoch 10/30
- 15s - loss: 0.0507 - acc: 0.9845 - val_loss: 0.0238 - val_acc: 0.9940
Epoch 11/30
- 14s - loss: 0.0442 - acc: 0.9874 - val_loss: 0.0232 - val_acc: 0.9935
Epoch 12/30
- 14s - loss: 0.0421 - acc: 0.9865 - val_loss: 0.0218 - val_acc: 0.9946
Epoch 1/30
- 30s - loss: 0.3098 - acc: 0.9004 - val_loss: 0.0635 - val_acc: 0.9801
Epoch 2/30
- 18s - loss: 0.1144 - acc: 0.9632 - val_loss: 0.0357 - val_acc: 0.9886
Epoch 3/30
- 18s - loss: 0.0877 - acc: 0.9725 - val_loss: 0.0325 - val_acc: 0.9912
Epoch 4/30
- 18s - loss: 0.0766 - acc: 0.9758 - val_loss: 0.0341 - val_acc: 0.9894
Epoch 5/30
- 17s - loss: 0.0676 - acc: 0.9795 - val_loss: 0.0315 - val_acc: 0.9904
Epoch 6/30
- 18s - loss: 0.0609 - acc: 0.9808 - val_loss: 0.0254 - val_acc: 0.9926
Epoch 7/30
- 18s - loss: 0.0547 - acc: 0.9824 - val_loss: 0.0238 - val_acc: 0.9927
Epoch 8/30
- 18s - loss: 0.0498 - acc: 0.9842 - val_loss: 0.0219 - val_acc: 0.9931
Epoch 9/30
- 18s - loss: 0.0446 - acc: 0.9863 - val_loss: 0.0227 - val_acc: 0.9936
Epoch 10/30
- 18s - loss: 0.0452 - acc: 0.9856 - val_loss: 0.0219 - val_acc: 0.9930
Epoch 11/30
- 18s - loss: 0.0389 - acc: 0.9882 - val_loss: 0.0172 - val_acc: 0.9938
Epoch 12/30
- 18s - loss: 0.0389 - acc: 0.9875 - val_loss: 0.0190 - val_acc: 0.9942
Epoch 13/30
- 18s - loss: 0.0353 - acc: 0.9887 - val_loss: 0.0137 - val_acc: 0.9950
Epoch 14/30
- 18s - loss: 0.0371 - acc: 0.9882 - val_loss: 0.0192 - val_acc: 0.9939
Epoch 15/30
- 18s - loss: 0.0346 - acc: 0.9883 - val_loss: 0.0134 - val_acc: 0.9956
Epoch 16/30
- 17s - loss: 0.0375 - acc: 0.9878 - val_loss: 0.0182 - val_acc: 0.9946
Epoch 17/30
- 17s - loss: 0.0325 - acc: 0.9892 - val_loss: 0.0163 - val_acc: 0.9950
Epoch 18/30
- 17s - loss: 0.0324 - acc: 0.9893 - val_loss: 0.0128 - val_acc: 0.9955
Epoch 19/30
- 18s - loss: 0.0327 - acc: 0.9901 - val_loss: 0.0175 - val_acc: 0.9948
Epoch 20/30
- 18s - loss: 0.0318 - acc: 0.9901 - val_loss: 0.0142 - val_acc: 0.9957
Epoch 21/30
- 17s - loss: 0.0306 - acc: 0.9897 - val_loss: 0.0159 - val_acc: 0.9954
Epoch 1/30
- 27s - loss: 0.5833 - acc: 0.9192 - val_loss: 0.2125 - val_acc: 0.9798
Epoch 2/30
- 15s - loss: 0.3753 - acc: 0.9613 - val_loss: 0.2395 - val_acc: 0.9799
Epoch 3/30
- 15s - loss: 0.3165 - acc: 0.9688 - val_loss: 0.1753 - val_acc: 0.9867
Epoch 4/30
- 16s - loss: 0.2935 - acc: 0.9721 - val_loss: 0.1860 - val_acc: 0.9831
Epoch 5/30
- 15s - loss: 0.3030 - acc: 0.9725 - val_loss: 0.3114 - val_acc: 0.9771
Epoch 6/30
- 15s - loss: 0.1678 - acc: 0.9840 - val_loss: 0.0845 - val_acc: 0.9924
Epoch 7/30
- 15s - loss: 0.1404 - acc: 0.9866 - val_loss: 0.0913 - val_acc: 0.9921
Epoch 8/30
- 16s - loss: 0.1245 - acc: 0.9863 - val_loss: 0.0976 - val_acc: 0.9907
Epoch 9/30
- 16s - loss: 0.0855 - acc: 0.9893 - val_loss: 0.0605 - val_acc: 0.9929
Epoch 10/30
- 15s - loss: 0.0825 - acc: 0.9898 - val_loss: 0.0573 - val_acc: 0.9932
Epoch 11/30
- 15s - loss: 0.0729 - acc: 0.9907 - val_loss: 0.0485 - val_acc: 0.9939
Epoch 12/30
- 15s - loss: 0.0691 - acc: 0.9906 - val_loss: 0.0452 - val_acc: 0.9943
Epoch 13/30
- 15s - loss: 0.0644 - acc: 0.9914 - val_loss: 0.0360 - val_acc: 0.9957
Epoch 14/30
- 15s - loss: 0.0658 - acc: 0.9912 - val_loss: 0.0559 - val_acc: 0.9939
Epoch 15/30
- 15s - loss: 0.0572 - acc: 0.9924 - val_loss: 0.0390 - val_acc: 0.9948
Epoch 16/30
- 15s - loss: 0.0488 - acc: 0.9924 - val_loss: 0.0381 - val_acc: 0.9951
Epoch 1/30
- 26s - loss: 0.2547 - acc: 0.9170 - val_loss: 0.0509 - val_acc: 0.9840
Epoch 2/30
- 15s - loss: 0.1018 - acc: 0.9680 - val_loss: 0.0492 - val_acc: 0.9854
Epoch 3/30
- 15s - loss: 0.0717 - acc: 0.9766 - val_loss: 0.0340 - val_acc: 0.9894
Epoch 4/30
- 15s - loss: 0.0644 - acc: 0.9796 - val_loss: 0.0295 - val_acc: 0.9912
Epoch 5/30
- 15s - loss: 0.0508 - acc: 0.9833 - val_loss: 0.0249 - val_acc: 0.9921
Epoch 6/30
- 14s - loss: 0.0523 - acc: 0.9834 - val_loss: 0.0188 - val_acc: 0.9937
Epoch 7/30
- 14s - loss: 0.0470 - acc: 0.9853 - val_loss: 0.0235 - val_acc: 0.9929
Epoch 8/30
- 14s - loss: 0.0413 - acc: 0.9866 - val_loss: 0.0316 - val_acc: 0.9914
Epoch 9/30
- 15s - loss: 0.0368 - acc: 0.9882 - val_loss: 0.0146 - val_acc: 0.9955
Epoch 10/30
- 14s - loss: 0.0344 - acc: 0.9896 - val_loss: 0.0225 - val_acc: 0.9932
Epoch 11/30
- 15s - loss: 0.0320 - acc: 0.9898 - val_loss: 0.0226 - val_acc: 0.9939
Epoch 12/30
- 14s - loss: 0.0316 - acc: 0.9902 - val_loss: 0.0199 - val_acc: 0.9939
Epoch 1/30
- 28s - loss: 0.1723 - acc: 0.9469 - val_loss: 0.0918 - val_acc: 0.9721
Epoch 2/30
- 14s - loss: 0.0690 - acc: 0.9771 - val_loss: 0.0359 - val_acc: 0.9886
Epoch 3/30
- 14s - loss: 0.0530 - acc: 0.9827 - val_loss: 0.0342 - val_acc: 0.9892
Epoch 4/30
- 14s - loss: 0.0442 - acc: 0.9860 - val_loss: 0.0211 - val_acc: 0.9932
Epoch 5/30
- 15s - loss: 0.0411 - acc: 0.9873 - val_loss: 0.0277 - val_acc: 0.9902
Epoch 6/30
- 14s - loss: 0.0342 - acc: 0.9897 - val_loss: 0.0252 - val_acc: 0.9911
Epoch 7/30
- 15s - loss: 0.0279 - acc: 0.9907 - val_loss: 0.0175 - val_acc: 0.9943
Epoch 8/30
- 15s - loss: 0.0236 - acc: 0.9923 - val_loss: 0.0196 - val_acc: 0.9940
Epoch 9/30
- 14s - loss: 0.0232 - acc: 0.9925 - val_loss: 0.0207 - val_acc: 0.9940
Epoch 10/30
- 14s - loss: 0.0220 - acc: 0.9932 - val_loss: 0.0205 - val_acc: 0.9935
Epoch 1/30
- 27s - loss: 0.2539 - acc: 0.9189 - val_loss: 0.0575 - val_acc: 0.9827
Epoch 2/30
- 15s - loss: 0.1015 - acc: 0.9676 - val_loss: 0.0413 - val_acc: 0.9871
Epoch 3/30
- 14s - loss: 0.0792 - acc: 0.9749 - val_loss: 0.0306 - val_acc: 0.9914
Epoch 4/30
- 14s - loss: 0.0676 - acc: 0.9783 - val_loss: 0.0350 - val_acc: 0.9905
Epoch 5/30
- 15s - loss: 0.0535 - acc: 0.9830 - val_loss: 0.0236 - val_acc: 0.9929
Epoch 6/30
- 14s - loss: 0.0477 - acc: 0.9847 - val_loss: 0.0280 - val_acc: 0.9918
Epoch 7/30
- 14s - loss: 0.0470 - acc: 0.9852 - val_loss: 0.0212 - val_acc: 0.9935
Epoch 8/30
- 14s - loss: 0.0419 - acc: 0.9869 - val_loss: 0.0222 - val_acc: 0.9943
Epoch 9/30
- 14s - loss: 0.0390 - acc: 0.9870 - val_loss: 0.0247 - val_acc: 0.9921
Epoch 10/30
- 15s - loss: 0.0360 - acc: 0.9885 - val_loss: 0.0207 - val_acc: 0.9943
Epoch 11/30
- 14s - loss: 0.0327 - acc: 0.9897 - val_loss: 0.0197 - val_acc: 0.9935
Epoch 12/30
- 14s - loss: 0.0318 - acc: 0.9901 - val_loss: 0.0190 - val_acc: 0.9940
Epoch 13/30
- 14s - loss: 0.0299 - acc: 0.9901 - val_loss: 0.0212 - val_acc: 0.9942
Epoch 14/30
- 14s - loss: 0.0310 - acc: 0.9910 - val_loss: 0.0180 - val_acc: 0.9943
Epoch 15/30
- 14s - loss: 0.0274 - acc: 0.9909 - val_loss: 0.0190 - val_acc: 0.9943
Epoch 16/30
- 14s - loss: 0.0297 - acc: 0.9902 - val_loss: 0.0173 - val_acc: 0.9940
Epoch 17/30
- 15s - loss: 0.0283 - acc: 0.9905 - val_loss: 0.0190 - val_acc: 0.9940
Epoch 18/30
- 15s - loss: 0.0288 - acc: 0.9910 - val_loss: 0.0166 - val_acc: 0.9949
Epoch 19/30
- 15s - loss: 0.0275 - acc: 0.9908 - val_loss: 0.0168 - val_acc: 0.9950
Epoch 20/30
- 15s - loss: 0.0269 - acc: 0.9919 - val_loss: 0.0158 - val_acc: 0.9954
Epoch 21/30
- 15s - loss: 0.0259 - acc: 0.9917 - val_loss: 0.0181 - val_acc: 0.9943
Epoch 22/30
- 15s - loss: 0.0275 - acc: 0.9913 - val_loss: 0.0151 - val_acc: 0.9956
Epoch 23/30
- 15s - loss: 0.0254 - acc: 0.9918 - val_loss: 0.0212 - val_acc: 0.9931
Epoch 24/30
- 15s - loss: 0.0257 - acc: 0.9922 - val_loss: 0.0167 - val_acc: 0.9951
Epoch 25/30
- 15s - loss: 0.0243 - acc: 0.9915 - val_loss: 0.0186 - val_acc: 0.9944
Epoch 1/30
- 27s - loss: 0.2612 - acc: 0.9184 - val_loss: 0.0539 - val_acc: 0.9833
Epoch 2/30
- 14s - loss: 0.1021 - acc: 0.9677 - val_loss: 0.0409 - val_acc: 0.9879
Epoch 3/30
- 14s - loss: 0.0720 - acc: 0.9781 - val_loss: 0.0278 - val_acc: 0.9902
Epoch 4/30
- 14s - loss: 0.0647 - acc: 0.9785 - val_loss: 0.0295 - val_acc: 0.9920
Epoch 5/30
- 15s - loss: 0.0559 - acc: 0.9820 - val_loss: 0.0308 - val_acc: 0.9904
Epoch 6/30
- 15s - loss: 0.0500 - acc: 0.9844 - val_loss: 0.0211 - val_acc: 0.9937
Epoch 7/30
- 15s - loss: 0.0453 - acc: 0.9854 - val_loss: 0.0219 - val_acc: 0.9933
Epoch 8/30
- 15s - loss: 0.0433 - acc: 0.9857 - val_loss: 0.0225 - val_acc: 0.9935
Epoch 9/30
- 15s - loss: 0.0417 - acc: 0.9864 - val_loss: 0.0217 - val_acc: 0.9931
Epoch 1/30
- 31s - loss: 0.2414 - acc: 0.9236 - val_loss: 0.0545 - val_acc: 0.9825
Epoch 2/30
- 17s - loss: 0.0993 - acc: 0.9687 - val_loss: 0.0492 - val_acc: 0.9857
Epoch 3/30
- 17s - loss: 0.0761 - acc: 0.9757 - val_loss: 0.0295 - val_acc: 0.9910
Epoch 4/30
- 17s - loss: 0.0605 - acc: 0.9812 - val_loss: 0.0292 - val_acc: 0.9917
Epoch 5/30
- 17s - loss: 0.0532 - acc: 0.9825 - val_loss: 0.0253 - val_acc: 0.9921
Epoch 6/30
- 17s - loss: 0.0452 - acc: 0.9859 - val_loss: 0.0246 - val_acc: 0.9919
Epoch 7/30
- 17s - loss: 0.0452 - acc: 0.9854 - val_loss: 0.0266 - val_acc: 0.9923
Epoch 8/30
- 18s - loss: 0.0399 - acc: 0.9871 - val_loss: 0.0199 - val_acc: 0.9936
Epoch 9/30
- 17s - loss: 0.0381 - acc: 0.9880 - val_loss: 0.0228 - val_acc: 0.9933
Epoch 10/30
- 17s - loss: 0.0362 - acc: 0.9885 - val_loss: 0.0231 - val_acc: 0.9926
Epoch 11/30
- 17s - loss: 0.0343 - acc: 0.9894 - val_loss: 0.0175 - val_acc: 0.9942
Epoch 12/30
- 17s - loss: 0.0312 - acc: 0.9906 - val_loss: 0.0188 - val_acc: 0.9946
Epoch 13/30
- 17s - loss: 0.0314 - acc: 0.9900 - val_loss: 0.0204 - val_acc: 0.9944
Epoch 14/30
- 17s - loss: 0.0269 - acc: 0.9913 - val_loss: 0.0196 - val_acc: 0.9938
Epoch 1/30
- 28s - loss: 0.1715 - acc: 0.9469 - val_loss: 0.0524 - val_acc: 0.9857
Epoch 2/30
- 15s - loss: 0.0670 - acc: 0.9789 - val_loss: 0.0355 - val_acc: 0.9886
Epoch 3/30
- 15s - loss: 0.0565 - acc: 0.9823 - val_loss: 0.0417 - val_acc: 0.9876
Epoch 4/30
- 15s - loss: 0.0458 - acc: 0.9862 - val_loss: 0.0297 - val_acc: 0.9912
Epoch 5/30
- 15s - loss: 0.0362 - acc: 0.9889 - val_loss: 0.0251 - val_acc: 0.9924
Epoch 6/30
- 15s - loss: 0.0315 - acc: 0.9902 - val_loss: 0.0254 - val_acc: 0.9924
Epoch 7/30
- 15s - loss: 0.0318 - acc: 0.9903 - val_loss: 0.0232 - val_acc: 0.9926
Epoch 8/30
- 15s - loss: 0.0280 - acc: 0.9905 - val_loss: 0.0223 - val_acc: 0.9933
Epoch 9/30
- 14s - loss: 0.0270 - acc: 0.9916 - val_loss: 0.0210 - val_acc: 0.9933
Epoch 10/30
- 15s - loss: 0.0235 - acc: 0.9927 - val_loss: 0.0245 - val_acc: 0.9927
Epoch 11/30
- 15s - loss: 0.0224 - acc: 0.9931 - val_loss: 0.0188 - val_acc: 0.9956
Epoch 12/30
- 15s - loss: 0.0211 - acc: 0.9932 - val_loss: 0.0216 - val_acc: 0.9931
Epoch 13/30
- 15s - loss: 0.0202 - acc: 0.9935 - val_loss: 0.0229 - val_acc: 0.9935
Epoch 14/30
- 15s - loss: 0.0177 - acc: 0.9944 - val_loss: 0.0146 - val_acc: 0.9957
Epoch 15/30
- 15s - loss: 0.0151 - acc: 0.9953 - val_loss: 0.0235 - val_acc: 0.9939
Epoch 16/30
- 15s - loss: 0.0149 - acc: 0.9954 - val_loss: 0.0141 - val_acc: 0.9955
Epoch 17/30
- 15s - loss: 0.0165 - acc: 0.9951 - val_loss: 0.0184 - val_acc: 0.9945
Epoch 18/30
- 15s - loss: 0.0147 - acc: 0.9952 - val_loss: 0.0176 - val_acc: 0.9952
Epoch 19/30
- 15s - loss: 0.0151 - acc: 0.9956 - val_loss: 0.0175 - val_acc: 0.9951
Epoch 1/30
- 29s - loss: 0.2600 - acc: 0.9187 - val_loss: 0.0584 - val_acc: 0.9812
Epoch 2/30
- 15s - loss: 0.1012 - acc: 0.9680 - val_loss: 0.0529 - val_acc: 0.9851
Epoch 3/30
- 15s - loss: 0.0765 - acc: 0.9761 - val_loss: 0.0409 - val_acc: 0.9901
Epoch 4/30
- 15s - loss: 0.0656 - acc: 0.9799 - val_loss: 0.0251 - val_acc: 0.9921
Epoch 5/30
- 15s - loss: 0.0569 - acc: 0.9821 - val_loss: 0.0341 - val_acc: 0.9904
Epoch 6/30
- 15s - loss: 0.0520 - acc: 0.9841 - val_loss: 0.0209 - val_acc: 0.9937
Epoch 7/30
- 16s - loss: 0.0456 - acc: 0.9854 - val_loss: 0.0276 - val_acc: 0.9918
Epoch 8/30
- 15s - loss: 0.0459 - acc: 0.9855 - val_loss: 0.0247 - val_acc: 0.9925
Epoch 9/30
- 15s - loss: 0.0383 - acc: 0.9876 - val_loss: 0.0219 - val_acc: 0.9930
Epoch 1/30
- 29s - loss: 0.5410 - acc: 0.8257 - val_loss: 0.0846 - val_acc: 0.9732
Epoch 2/30
- 15s - loss: 0.1835 - acc: 0.9438 - val_loss: 0.0549 - val_acc: 0.9832
Epoch 3/30
- 15s - loss: 0.1286 - acc: 0.9605 - val_loss: 0.0496 - val_acc: 0.9850
Epoch 4/30
- 15s - loss: 0.1089 - acc: 0.9670 - val_loss: 0.0376 - val_acc: 0.9880
Epoch 5/30
- 15s - loss: 0.0955 - acc: 0.9707 - val_loss: 0.0380 - val_acc: 0.9874
Epoch 6/30
- 15s - loss: 0.0814 - acc: 0.9741 - val_loss: 0.0307 - val_acc: 0.9893
Epoch 7/30
- 16s - loss: 0.0809 - acc: 0.9749 - val_loss: 0.0490 - val_acc: 0.9855
Epoch 8/30
- 15s - loss: 0.0723 - acc: 0.9768 - val_loss: 0.0297 - val_acc: 0.9896
Epoch 9/30
- 15s - loss: 0.0669 - acc: 0.9783 - val_loss: 0.0276 - val_acc: 0.9918
Epoch 10/30
- 15s - loss: 0.0611 - acc: 0.9806 - val_loss: 0.0310 - val_acc: 0.9889
Epoch 11/30
- 15s - loss: 0.0603 - acc: 0.9812 - val_loss: 0.0387 - val_acc: 0.9900
Epoch 12/30
- 15s - loss: 0.0513 - acc: 0.9838 - val_loss: 0.0245 - val_acc: 0.9924
Epoch 13/30
- 15s - loss: 0.0521 - acc: 0.9844 - val_loss: 0.0201 - val_acc: 0.9935
Epoch 14/30
- 15s - loss: 0.0533 - acc: 0.9838 - val_loss: 0.0261 - val_acc: 0.9925
Epoch 15/30
- 15s - loss: 0.0453 - acc: 0.9858 - val_loss: 0.0223 - val_acc: 0.9927
Epoch 16/30
- 15s - loss: 0.0484 - acc: 0.9851 - val_loss: 0.0218 - val_acc: 0.9932
Epoch 1/30
- 29s - loss: 0.4198 - acc: 0.8675 - val_loss: 0.0541 - val_acc: 0.9825
Epoch 2/30
- 15s - loss: 0.1570 - acc: 0.9512 - val_loss: 0.0437 - val_acc: 0.9858
Epoch 3/30
- 15s - loss: 0.1191 - acc: 0.9624 - val_loss: 0.0337 - val_acc: 0.9890
Epoch 4/30
- 15s - loss: 0.0992 - acc: 0.9684 - val_loss: 0.0347 - val_acc: 0.9889
Epoch 5/30
- 15s - loss: 0.0865 - acc: 0.9735 - val_loss: 0.0412 - val_acc: 0.9879
Epoch 6/30
- 15s - loss: 0.0780 - acc: 0.9763 - val_loss: 0.0242 - val_acc: 0.9923
Epoch 7/30
- 15s - loss: 0.0688 - acc: 0.9781 - val_loss: 0.0266 - val_acc: 0.9924
Epoch 8/30
- 15s - loss: 0.0733 - acc: 0.9769 - val_loss: 0.0247 - val_acc: 0.9925
Epoch 9/30
- 15s - loss: 0.0648 - acc: 0.9794 - val_loss: 0.0235 - val_acc: 0.9929
Epoch 10/30
- 16s - loss: 0.0675 - acc: 0.9789 - val_loss: 0.0257 - val_acc: 0.9924
Epoch 11/30
- 15s - loss: 0.0642 - acc: 0.9795 - val_loss: 0.0243 - val_acc: 0.9930
Epoch 12/30
- 15s - loss: 0.0666 - acc: 0.9792 - val_loss: 0.0257 - val_acc: 0.9924
Epoch 1/30
- 29s - loss: 0.2276 - acc: 0.9388 - val_loss: 0.0552 - val_acc: 0.9852
Epoch 2/30
- 15s - loss: 0.0762 - acc: 0.9790 - val_loss: 0.0507 - val_acc: 0.9836
Epoch 3/30
- 15s - loss: 0.0549 - acc: 0.9841 - val_loss: 0.0339 - val_acc: 0.9898
Epoch 4/30
- 15s - loss: 0.0483 - acc: 0.9865 - val_loss: 0.0323 - val_acc: 0.9894
Epoch 5/30
- 16s - loss: 0.0413 - acc: 0.9882 - val_loss: 0.0358 - val_acc: 0.9896
Epoch 6/30
- 15s - loss: 0.0362 - acc: 0.9888 - val_loss: 0.0319 - val_acc: 0.9902
Epoch 7/30
- 15s - loss: 0.0340 - acc: 0.9898 - val_loss: 0.0289 - val_acc: 0.9913
Epoch 8/30
- 15s - loss: 0.0314 - acc: 0.9907 - val_loss: 0.0252 - val_acc: 0.9918
Epoch 9/30
- 15s - loss: 0.0283 - acc: 0.9919 - val_loss: 0.0235 - val_acc: 0.9927
Epoch 10/30
- 15s - loss: 0.0285 - acc: 0.9908 - val_loss: 0.0225 - val_acc: 0.9930
Epoch 11/30
- 15s - loss: 0.0264 - acc: 0.9923 - val_loss: 0.0183 - val_acc: 0.9948
Epoch 12/30
- 15s - loss: 0.0235 - acc: 0.9927 - val_loss: 0.0218 - val_acc: 0.9932
Epoch 13/30
- 15s - loss: 0.0221 - acc: 0.9932 - val_loss: 0.0203 - val_acc: 0.9930
Epoch 14/30
- 16s - loss: 0.0188 - acc: 0.9947 - val_loss: 0.0170 - val_acc: 0.9944
Epoch 15/30
- 15s - loss: 0.0162 - acc: 0.9954 - val_loss: 0.0175 - val_acc: 0.9946
Epoch 16/30
- 15s - loss: 0.0165 - acc: 0.9953 - val_loss: 0.0174 - val_acc: 0.9946
Epoch 17/30
- 15s - loss: 0.0150 - acc: 0.9956 - val_loss: 0.0166 - val_acc: 0.9951
Epoch 18/30
- 15s - loss: 0.0139 - acc: 0.9963 - val_loss: 0.0159 - val_acc: 0.9951
Epoch 19/30
- 16s - loss: 0.0150 - acc: 0.9957 - val_loss: 0.0169 - val_acc: 0.9949
Epoch 20/30
- 15s - loss: 0.0153 - acc: 0.9959 - val_loss: 0.0166 - val_acc: 0.9951
Epoch 21/30
- 15s - loss: 0.0148 - acc: 0.9956 - val_loss: 0.0165 - val_acc: 0.9950
Epoch 1/30
- 30s - loss: 0.4987 - acc: 0.8427 - val_loss: 0.1087 - val_acc: 0.9671
Epoch 2/30
- 15s - loss: 0.1680 - acc: 0.9492 - val_loss: 0.0691 - val_acc: 0.9795
Epoch 3/30
- 15s - loss: 0.1223 - acc: 0.9624 - val_loss: 0.0353 - val_acc: 0.9888
Epoch 4/30
- 15s - loss: 0.1006 - acc: 0.9689 - val_loss: 0.0487 - val_acc: 0.9848
Epoch 5/30
- 15s - loss: 0.0887 - acc: 0.9727 - val_loss: 0.0361 - val_acc: 0.9892
Epoch 6/30
- 15s - loss: 0.0773 - acc: 0.9755 - val_loss: 0.0344 - val_acc: 0.9898
Epoch 7/30
- 15s - loss: 0.0712 - acc: 0.9777 - val_loss: 0.0250 - val_acc: 0.9921
Epoch 8/30
- 15s - loss: 0.0721 - acc: 0.9776 - val_loss: 0.0332 - val_acc: 0.9898
Epoch 9/30
- 15s - loss: 0.0685 - acc: 0.9786 - val_loss: 0.0296 - val_acc: 0.9905
Epoch 10/30
- 15s - loss: 0.0676 - acc: 0.9786 - val_loss: 0.0286 - val_acc: 0.9906
Epoch 1/30
- 35s - loss: 0.3322 - acc: 0.9121 - val_loss: 0.1658 - val_acc: 0.9780
Epoch 2/30
- 18s - loss: 0.1908 - acc: 0.9568 - val_loss: 0.1393 - val_acc: 0.9829
Epoch 3/30
- 18s - loss: 0.1404 - acc: 0.9679 - val_loss: 0.1026 - val_acc: 0.9850
Epoch 4/30
- 19s - loss: 0.1349 - acc: 0.9701 - val_loss: 0.1686 - val_acc: 0.9743
Epoch 5/30
- 18s - loss: 0.1292 - acc: 0.9723 - val_loss: 0.0548 - val_acc: 0.9899
Epoch 6/30
- 18s - loss: 0.1349 - acc: 0.9721 - val_loss: 0.0624 - val_acc: 0.9906
Epoch 7/30
- 19s - loss: 0.1141 - acc: 0.9757 - val_loss: 0.0719 - val_acc: 0.9886
Epoch 8/30
- 19s - loss: 0.0845 - acc: 0.9818 - val_loss: 0.0561 - val_acc: 0.9912
Epoch 1/30
- 31s - loss: 0.4166 - acc: 0.8683 - val_loss: 0.0654 - val_acc: 0.9773
Epoch 2/30
- 16s - loss: 0.1473 - acc: 0.9548 - val_loss: 0.0670 - val_acc: 0.9776
Epoch 3/30
- 15s - loss: 0.1055 - acc: 0.9675 - val_loss: 0.0515 - val_acc: 0.9836
Epoch 4/30
- 16s - loss: 0.0903 - acc: 0.9727 - val_loss: 0.0366 - val_acc: 0.9875
Epoch 5/30
- 15s - loss: 0.0756 - acc: 0.9767 - val_loss: 0.0440 - val_acc: 0.9864
Epoch 6/30
- 15s - loss: 0.0701 - acc: 0.9784 - val_loss: 0.0389 - val_acc: 0.9871
Epoch 7/30
- 16s - loss: 0.0595 - acc: 0.9813 - val_loss: 0.0276 - val_acc: 0.9914
Epoch 8/30
- 15s - loss: 0.0591 - acc: 0.9818 - val_loss: 0.0249 - val_acc: 0.9918
Epoch 9/30
- 16s - loss: 0.0532 - acc: 0.9833 - val_loss: 0.0252 - val_acc: 0.9904
Epoch 10/30
- 15s - loss: 0.0537 - acc: 0.9829 - val_loss: 0.0304 - val_acc: 0.9910
Epoch 11/30
- 15s - loss: 0.0500 - acc: 0.9841 - val_loss: 0.0249 - val_acc: 0.9912
Epoch 1/30
- 32s - loss: 0.4039 - acc: 0.8804 - val_loss: 0.0770 - val_acc: 0.9777
Epoch 2/30
- 15s - loss: 0.1363 - acc: 0.9582 - val_loss: 0.0777 - val_acc: 0.9730
Epoch 3/30
- 15s - loss: 0.0984 - acc: 0.9692 - val_loss: 0.0796 - val_acc: 0.9790
Epoch 4/30
- 15s - loss: 0.0857 - acc: 0.9746 - val_loss: 0.0329 - val_acc: 0.9898
Epoch 5/30
- 16s - loss: 0.0776 - acc: 0.9769 - val_loss: 0.0379 - val_acc: 0.9886
Epoch 6/30
- 15s - loss: 0.0727 - acc: 0.9785 - val_loss: 0.0391 - val_acc: 0.9885
Epoch 7/30
- 16s - loss: 0.0719 - acc: 0.9790 - val_loss: 0.0335 - val_acc: 0.9895
Epoch 1/30
- 32s - loss: 0.3816 - acc: 0.9165 - val_loss: 0.3787 - val_acc: 0.9611
Epoch 2/30
- 16s - loss: 0.1981 - acc: 0.9608 - val_loss: 0.1979 - val_acc: 0.9800
Epoch 3/30
- 16s - loss: 0.1507 - acc: 0.9689 - val_loss: 0.1114 - val_acc: 0.9861
Epoch 4/30
- 15s - loss: 0.1342 - acc: 0.9738 - val_loss: 0.1051 - val_acc: 0.9807
Epoch 5/30
- 16s - loss: 0.1183 - acc: 0.9765 - val_loss: 0.0787 - val_acc: 0.9856
Epoch 6/30
- 16s - loss: 0.1176 - acc: 0.9783 - val_loss: 0.1074 - val_acc: 0.9871
Epoch 7/30
- 16s - loss: 0.1066 - acc: 0.9790 - val_loss: 0.0739 - val_acc: 0.9918
Epoch 8/30
- 16s - loss: 0.0992 - acc: 0.9804 - val_loss: 0.0884 - val_acc: 0.9904
Epoch 9/30
- 15s - loss: 0.1008 - acc: 0.9819 - val_loss: 0.0958 - val_acc: 0.9868
Epoch 10/30
- 16s - loss: 0.0691 - acc: 0.9865 - val_loss: 0.0395 - val_acc: 0.9942
Epoch 11/30
- 16s - loss: 0.0565 - acc: 0.9891 - val_loss: 0.0358 - val_acc: 0.9951
Epoch 12/30
- 16s - loss: 0.0511 - acc: 0.9895 - val_loss: 0.0427 - val_acc: 0.9945
Epoch 13/30
- 16s - loss: 0.0561 - acc: 0.9897 - val_loss: 0.0484 - val_acc: 0.9937
Epoch 14/30
- 16s - loss: 0.0473 - acc: 0.9910 - val_loss: 0.0385 - val_acc: 0.9950
Epoch 1/30
- 43s - loss: 0.2885 - acc: 0.9180 - val_loss: 0.0806 - val_acc: 0.9770
Epoch 2/30
- 23s - loss: 0.1190 - acc: 0.9667 - val_loss: 0.0585 - val_acc: 0.9831
Epoch 3/30
- 24s - loss: 0.0853 - acc: 0.9759 - val_loss: 0.0487 - val_acc: 0.9881
Epoch 4/30
- 23s - loss: 0.0723 - acc: 0.9795 - val_loss: 0.0491 - val_acc: 0.9868
Epoch 5/30
- 23s - loss: 0.0649 - acc: 0.9807 - val_loss: 0.0384 - val_acc: 0.9907
Epoch 6/30
- 23s - loss: 0.0579 - acc: 0.9832 - val_loss: 0.0334 - val_acc: 0.9918
Epoch 7/30
- 23s - loss: 0.0536 - acc: 0.9842 - val_loss: 0.0423 - val_acc: 0.9895
Epoch 8/30
- 23s - loss: 0.0445 - acc: 0.9871 - val_loss: 0.0300 - val_acc: 0.9935
Epoch 9/30
- 23s - loss: 0.0443 - acc: 0.9869 - val_loss: 0.0312 - val_acc: 0.9929
Epoch 10/30
- 23s - loss: 0.0402 - acc: 0.9876 - val_loss: 0.0301 - val_acc: 0.9924
Epoch 11/30
- 24s - loss: 0.0341 - acc: 0.9895 - val_loss: 0.0222 - val_acc: 0.9933
Epoch 12/30
- 23s - loss: 0.0304 - acc: 0.9904 - val_loss: 0.0240 - val_acc: 0.9932
Epoch 13/30
- 23s - loss: 0.0311 - acc: 0.9911 - val_loss: 0.0250 - val_acc: 0.9935
Epoch 14/30
- 23s - loss: 0.0262 - acc: 0.9920 - val_loss: 0.0222 - val_acc: 0.9935
Epoch 15/30
- 23s - loss: 0.0277 - acc: 0.9917 - val_loss: 0.0213 - val_acc: 0.9938
Epoch 16/30
- 24s - loss: 0.0247 - acc: 0.9926 - val_loss: 0.0214 - val_acc: 0.9939
Epoch 17/30
- 24s - loss: 0.0248 - acc: 0.9926 - val_loss: 0.0217 - val_acc: 0.9940
Epoch 18/30
- 24s - loss: 0.0253 - acc: 0.9921 - val_loss: 0.0210 - val_acc: 0.9944
Epoch 19/30
- 24s - loss: 0.0239 - acc: 0.9929 - val_loss: 0.0205 - val_acc: 0.9943
Epoch 20/30
- 23s - loss: 0.0240 - acc: 0.9923 - val_loss: 0.0204 - val_acc: 0.9943
Epoch 21/30
- 24s - loss: 0.0243 - acc: 0.9920 - val_loss: 0.0204 - val_acc: 0.9942
Epoch 22/30
- 24s - loss: 0.0236 - acc: 0.9924 - val_loss: 0.0205 - val_acc: 0.9944
Epoch 23/30
- 23s - loss: 0.0269 - acc: 0.9926 - val_loss: 0.0204 - val_acc: 0.9944
Epoch 24/30
- 24s - loss: 0.0265 - acc: 0.9915 - val_loss: 0.0205 - val_acc: 0.9946
Epoch 25/30
- 23s - loss: 0.0253 - acc: 0.9925 - val_loss: 0.0205 - val_acc: 0.9944
Epoch 26/30
- 24s - loss: 0.0248 - acc: 0.9925 - val_loss: 0.0205 - val_acc: 0.9944
Epoch 1/30
- 33s - loss: 0.8574 - acc: 0.7248 - val_loss: 0.1646 - val_acc: 0.9519
Epoch 2/30
- 16s - loss: 0.3019 - acc: 0.9083 - val_loss: 0.1017 - val_acc: 0.9711
Epoch 3/30
- 15s - loss: 0.2140 - acc: 0.9342 - val_loss: 0.1034 - val_acc: 0.9669
Epoch 4/30
- 15s - loss: 0.1736 - acc: 0.9469 - val_loss: 0.0713 - val_acc: 0.9779
Epoch 5/30
- 15s - loss: 0.1433 - acc: 0.9551 - val_loss: 0.0490 - val_acc: 0.9840
Epoch 6/30
- 15s - loss: 0.1321 - acc: 0.9592 - val_loss: 0.0528 - val_acc: 0.9836
Epoch 7/30
- 15s - loss: 0.1178 - acc: 0.9632 - val_loss: 0.0466 - val_acc: 0.9855
Epoch 8/30
- 16s - loss: 0.1069 - acc: 0.9661 - val_loss: 0.0466 - val_acc: 0.9851
Epoch 9/30
- 16s - loss: 0.1033 - acc: 0.9682 - val_loss: 0.0492 - val_acc: 0.9857
Epoch 10/30
- 16s - loss: 0.0983 - acc: 0.9684 - val_loss: 0.0346 - val_acc: 0.9898
Epoch 11/30
- 16s - loss: 0.0927 - acc: 0.9702 - val_loss: 0.0362 - val_acc: 0.9880
Epoch 12/30
- 16s - loss: 0.0929 - acc: 0.9705 - val_loss: 0.0383 - val_acc: 0.9879
Epoch 13/30
- 16s - loss: 0.0887 - acc: 0.9723 - val_loss: 0.0339 - val_acc: 0.9886
Epoch 14/30
- 16s - loss: 0.0917 - acc: 0.9710 - val_loss: 0.0369 - val_acc: 0.9870
Epoch 15/30
- 15s - loss: 0.0918 - acc: 0.9718 - val_loss: 0.0328 - val_acc: 0.9907
Epoch 16/30
- 16s - loss: 0.0877 - acc: 0.9726 - val_loss: 0.0351 - val_acc: 0.9893
Epoch 17/30
- 15s - loss: 0.0872 - acc: 0.9728 - val_loss: 0.0370 - val_acc: 0.9880
Epoch 18/30
- 15s - loss: 0.0857 - acc: 0.9730 - val_loss: 0.0339 - val_acc: 0.9881
Epoch 1/30
- 34s - loss: 0.3253 - acc: 0.9127 - val_loss: 0.1139 - val_acc: 0.9807
Epoch 2/30
- 16s - loss: 0.1609 - acc: 0.9636 - val_loss: 0.1716 - val_acc: 0.9705
Epoch 3/30
- 16s - loss: 0.1301 - acc: 0.9702 - val_loss: 0.1231 - val_acc: 0.9846
Epoch 4/30
- 16s - loss: 0.0756 - acc: 0.9826 - val_loss: 0.0505 - val_acc: 0.9926
Epoch 5/30
- 16s - loss: 0.0640 - acc: 0.9851 - val_loss: 0.0426 - val_acc: 0.9929
Epoch 6/30
- 16s - loss: 0.0590 - acc: 0.9860 - val_loss: 0.0519 - val_acc: 0.9918
Epoch 7/30
- 16s - loss: 0.0569 - acc: 0.9868 - val_loss: 0.0425 - val_acc: 0.9923
Epoch 8/30
- 15s - loss: 0.0524 - acc: 0.9878 - val_loss: 0.0678 - val_acc: 0.9919
Epoch 9/30
- 16s - loss: 0.0520 - acc: 0.9862 - val_loss: 0.0399 - val_acc: 0.9946
Epoch 10/30
- 15s - loss: 0.0484 - acc: 0.9881 - val_loss: 0.0539 - val_acc: 0.9927
Epoch 11/30
- 16s - loss: 0.0552 - acc: 0.9874 - val_loss: 0.1110 - val_acc: 0.9887
Epoch 12/30
- 16s - loss: 0.0394 - acc: 0.9910 - val_loss: 0.0405 - val_acc: 0.9943
Epoch 1/30
- 42s - loss: 0.4217 - acc: 0.8791 - val_loss: 0.0716 - val_acc: 0.9781
Epoch 2/30
- 23s - loss: 0.1711 - acc: 0.9516 - val_loss: 0.0684 - val_acc: 0.9813
Epoch 3/30
- 22s - loss: 0.1250 - acc: 0.9640 - val_loss: 0.0454 - val_acc: 0.9890
Epoch 4/30
- 23s - loss: 0.0998 - acc: 0.9713 - val_loss: 0.0379 - val_acc: 0.9896
Epoch 5/30
- 23s - loss: 0.0919 - acc: 0.9740 - val_loss: 0.0381 - val_acc: 0.9895
Epoch 6/30
- 22s - loss: 0.0796 - acc: 0.9764 - val_loss: 0.0550 - val_acc: 0.9868
Epoch 7/30
- 23s - loss: 0.0651 - acc: 0.9806 - val_loss: 0.0218 - val_acc: 0.9927
Epoch 8/30
- 23s - loss: 0.0604 - acc: 0.9813 - val_loss: 0.0271 - val_acc: 0.9925
Epoch 9/30
- 23s - loss: 0.0575 - acc: 0.9834 - val_loss: 0.0210 - val_acc: 0.9937
Epoch 10/30
- 23s - loss: 0.0527 - acc: 0.9841 - val_loss: 0.0249 - val_acc: 0.9926
Epoch 11/30
- 23s - loss: 0.0547 - acc: 0.9838 - val_loss: 0.0197 - val_acc: 0.9944
Epoch 12/30
- 23s - loss: 0.0532 - acc: 0.9845 - val_loss: 0.0218 - val_acc: 0.9931
Epoch 13/30
- 23s - loss: 0.0510 - acc: 0.9850 - val_loss: 0.0221 - val_acc: 0.9933
Epoch 14/30
- 23s - loss: 0.0495 - acc: 0.9854 - val_loss: 0.0172 - val_acc: 0.9945
Epoch 15/30
- 22s - loss: 0.0440 - acc: 0.9864 - val_loss: 0.0259 - val_acc: 0.9931
Epoch 16/30
- 22s - loss: 0.0443 - acc: 0.9867 - val_loss: 0.0204 - val_acc: 0.9942
Epoch 17/30
- 23s - loss: 0.0444 - acc: 0.9861 - val_loss: 0.0193 - val_acc: 0.9939
Epoch 1/30
- 36s - loss: 0.2182 - acc: 0.9395 - val_loss: 0.1395 - val_acc: 0.9727
Epoch 2/30
- 16s - loss: 0.1010 - acc: 0.9735 - val_loss: 0.0986 - val_acc: 0.9783
Epoch 3/30
- 16s - loss: 0.0796 - acc: 0.9790 - val_loss: 0.0588 - val_acc: 0.9870
Epoch 4/30
- 16s - loss: 0.0678 - acc: 0.9816 - val_loss: 0.0455 - val_acc: 0.9890
Epoch 5/30
- 16s - loss: 0.0579 - acc: 0.9847 - val_loss: 0.0470 - val_acc: 0.9877
Epoch 6/30
- 16s - loss: 0.0535 - acc: 0.9848 - val_loss: 0.0567 - val_acc: 0.9885
Epoch 7/30
- 16s - loss: 0.0287 - acc: 0.9919 - val_loss: 0.0252 - val_acc: 0.9933
Epoch 8/30
- 16s - loss: 0.0208 - acc: 0.9937 - val_loss: 0.0293 - val_acc: 0.9921
Epoch 9/30
- 16s - loss: 0.0186 - acc: 0.9941 - val_loss: 0.0225 - val_acc: 0.9939
Epoch 10/30
- 15s - loss: 0.0172 - acc: 0.9946 - val_loss: 0.0263 - val_acc: 0.9931
Epoch 11/30
- 15s - loss: 0.0186 - acc: 0.9947 - val_loss: 0.0269 - val_acc: 0.9936
Epoch 12/30
- 16s - loss: 0.0154 - acc: 0.9954 - val_loss: 0.0224 - val_acc: 0.9936
Epoch 13/30
- 15s - loss: 0.0117 - acc: 0.9965 - val_loss: 0.0211 - val_acc: 0.9951
Epoch 14/30
- 15s - loss: 0.0112 - acc: 0.9964 - val_loss: 0.0181 - val_acc: 0.9948
Epoch 15/30
- 16s - loss: 0.0089 - acc: 0.9974 - val_loss: 0.0215 - val_acc: 0.9949
Epoch 16/30
- 15s - loss: 0.0107 - acc: 0.9968 - val_loss: 0.0237 - val_acc: 0.9935
Epoch 17/30
- 16s - loss: 0.0085 - acc: 0.9974 - val_loss: 0.0194 - val_acc: 0.9950
Epoch 1/30
- 37s - loss: 0.2018 - acc: 0.9386 - val_loss: 0.0844 - val_acc: 0.9777
Epoch 2/30
- 16s - loss: 0.0913 - acc: 0.9749 - val_loss: 0.0747 - val_acc: 0.9832
Epoch 3/30
- 16s - loss: 0.0716 - acc: 0.9798 - val_loss: 0.0752 - val_acc: 0.9838
Epoch 4/30
- 16s - loss: 0.0651 - acc: 0.9826 - val_loss: 0.0730 - val_acc: 0.9824
Epoch 5/30
- 16s - loss: 0.0517 - acc: 0.9859 - val_loss: 0.0763 - val_acc: 0.9854
Epoch 6/30
- 16s - loss: 0.0506 - acc: 0.9851 - val_loss: 0.0316 - val_acc: 0.9921
Epoch 7/30
- 16s - loss: 0.0440 - acc: 0.9865 - val_loss: 0.0342 - val_acc: 0.9931
Epoch 8/30
- 16s - loss: 0.0436 - acc: 0.9879 - val_loss: 0.0499 - val_acc: 0.9898
Epoch 9/30
- 16s - loss: 0.0228 - acc: 0.9930 - val_loss: 0.0273 - val_acc: 0.9933
Epoch 10/30
- 16s - loss: 0.0182 - acc: 0.9946 - val_loss: 0.0246 - val_acc: 0.9939
Epoch 11/30
- 15s - loss: 0.0171 - acc: 0.9944 - val_loss: 0.0216 - val_acc: 0.9943
Epoch 12/30
- 16s - loss: 0.0166 - acc: 0.9949 - val_loss: 0.0220 - val_acc: 0.9943
Epoch 13/30
- 16s - loss: 0.0144 - acc: 0.9955 - val_loss: 0.0172 - val_acc: 0.9956
Epoch 14/30
- 15s - loss: 0.0149 - acc: 0.9953 - val_loss: 0.0246 - val_acc: 0.9944
Epoch 15/30
- 16s - loss: 0.0143 - acc: 0.9954 - val_loss: 0.0202 - val_acc: 0.9949
Epoch 16/30
- 16s - loss: 0.0102 - acc: 0.9965 - val_loss: 0.0174 - val_acc: 0.9965
Epoch 1/30
- 36s - loss: 0.3440 - acc: 0.9105 - val_loss: 0.4647 - val_acc: 0.9112
Epoch 2/30
- 16s - loss: 0.1564 - acc: 0.9628 - val_loss: 0.1167 - val_acc: 0.9768
Epoch 3/30
- 16s - loss: 0.1286 - acc: 0.9695 - val_loss: 0.0946 - val_acc: 0.9802
Epoch 4/30
- 15s - loss: 0.0929 - acc: 0.9762 - val_loss: 0.0798 - val_acc: 0.9848
Epoch 5/30
- 15s - loss: 0.0773 - acc: 0.9798 - val_loss: 0.0497 - val_acc: 0.9870
Epoch 6/30
- 15s - loss: 0.0614 - acc: 0.9829 - val_loss: 0.0611 - val_acc: 0.9844
Epoch 7/30
- 15s - loss: 0.0613 - acc: 0.9824 - val_loss: 0.0538 - val_acc: 0.9862
Epoch 8/30
- 16s - loss: 0.0354 - acc: 0.9898 - val_loss: 0.0391 - val_acc: 0.9902
Epoch 9/30
- 16s - loss: 0.0311 - acc: 0.9905 - val_loss: 0.0272 - val_acc: 0.9924
Epoch 10/30
- 16s - loss: 0.0286 - acc: 0.9916 - val_loss: 0.0263 - val_acc: 0.9927
Epoch 11/30
- 16s - loss: 0.0251 - acc: 0.9916 - val_loss: 0.0282 - val_acc: 0.9927
Epoch 12/30
- 16s - loss: 0.0248 - acc: 0.9929 - val_loss: 0.0327 - val_acc: 0.9914
Epoch 13/30
- 16s - loss: 0.0187 - acc: 0.9941 - val_loss: 0.0211 - val_acc: 0.9940
Epoch 14/30
- 16s - loss: 0.0170 - acc: 0.9945 - val_loss: 0.0231 - val_acc: 0.9942
Epoch 15/30
- 16s - loss: 0.0149 - acc: 0.9956 - val_loss: 0.0218 - val_acc: 0.9949
Epoch 16/30
- 16s - loss: 0.0146 - acc: 0.9956 - val_loss: 0.0213 - val_acc: 0.9945
Epoch 1/30
- 37s - loss: 0.1987 - acc: 0.9405 - val_loss: 0.0916 - val_acc: 0.9760
Epoch 2/30
- 17s - loss: 0.0918 - acc: 0.9741 - val_loss: 0.0592 - val_acc: 0.9842
Epoch 3/30
- 16s - loss: 0.0702 - acc: 0.9799 - val_loss: 0.0626 - val_acc: 0.9842
Epoch 4/30
- 16s - loss: 0.0628 - acc: 0.9821 - val_loss: 0.0604 - val_acc: 0.9877
Epoch 5/30
- 17s - loss: 0.0332 - acc: 0.9906 - val_loss: 0.0287 - val_acc: 0.9917
Epoch 6/30
- 17s - loss: 0.0255 - acc: 0.9923 - val_loss: 0.0240 - val_acc: 0.9933
Epoch 7/30
- 16s - loss: 0.0227 - acc: 0.9931 - val_loss: 0.0218 - val_acc: 0.9935
Epoch 8/30
- 16s - loss: 0.0210 - acc: 0.9935 - val_loss: 0.0231 - val_acc: 0.9931
Epoch 9/30
- 16s - loss: 0.0220 - acc: 0.9929 - val_loss: 0.0178 - val_acc: 0.9951
Epoch 10/30
- 16s - loss: 0.0234 - acc: 0.9927 - val_loss: 0.0226 - val_acc: 0.9948
Epoch 11/30
- 17s - loss: 0.0198 - acc: 0.9943 - val_loss: 0.0215 - val_acc: 0.9930
Epoch 12/30
- 16s - loss: 0.0137 - acc: 0.9956 - val_loss: 0.0203 - val_acc: 0.9944
Epoch 1/30
- 38s - loss: 0.2393 - acc: 0.9237 - val_loss: 0.0820 - val_acc: 0.9819
Epoch 2/30
- 16s - loss: 0.1017 - acc: 0.9710 - val_loss: 0.0807 - val_acc: 0.9823
Epoch 3/30
- 17s - loss: 0.0840 - acc: 0.9772 - val_loss: 0.0525 - val_acc: 0.9881
Epoch 4/30
- 16s - loss: 0.0659 - acc: 0.9811 - val_loss: 0.0464 - val_acc: 0.9873
Epoch 5/30
- 17s - loss: 0.0676 - acc: 0.9811 - val_loss: 0.0353 - val_acc: 0.9907
Epoch 6/30
- 16s - loss: 0.0555 - acc: 0.9842 - val_loss: 0.0233 - val_acc: 0.9931
Epoch 7/30
- 16s - loss: 0.0519 - acc: 0.9843 - val_loss: 0.0322 - val_acc: 0.9917
Epoch 8/30
- 16s - loss: 0.0477 - acc: 0.9861 - val_loss: 0.0421 - val_acc: 0.9889
Epoch 9/30
- 17s - loss: 0.0280 - acc: 0.9916 - val_loss: 0.0231 - val_acc: 0.9944
Epoch 10/30
- 16s - loss: 0.0217 - acc: 0.9936 - val_loss: 0.0180 - val_acc: 0.9942
Epoch 11/30
- 16s - loss: 0.0215 - acc: 0.9934 - val_loss: 0.0267 - val_acc: 0.9932
Epoch 12/30
- 16s - loss: 0.0185 - acc: 0.9938 - val_loss: 0.0175 - val_acc: 0.9946
Epoch 13/30
- 16s - loss: 0.0199 - acc: 0.9943 - val_loss: 0.0219 - val_acc: 0.9937
Epoch 14/30
- 16s - loss: 0.0207 - acc: 0.9930 - val_loss: 0.0243 - val_acc: 0.9939
Epoch 15/30
- 15s - loss: 0.0154 - acc: 0.9959 - val_loss: 0.0240 - val_acc: 0.9937
Epoch 1/30
- 38s - loss: 0.3076 - acc: 0.9264 - val_loss: 0.2360 - val_acc: 0.9562
Epoch 2/30
- 17s - loss: 0.1637 - acc: 0.9674 - val_loss: 0.1731 - val_acc: 0.9718
Epoch 3/30
- 17s - loss: 0.1179 - acc: 0.9746 - val_loss: 0.0739 - val_acc: 0.9862
Epoch 4/30
- 16s - loss: 0.0817 - acc: 0.9808 - val_loss: 0.0571 - val_acc: 0.9871
Epoch 5/30
- 17s - loss: 0.0611 - acc: 0.9843 - val_loss: 0.0501 - val_acc: 0.9892
Epoch 6/30
- 16s - loss: 0.0638 - acc: 0.9838 - val_loss: 0.0423 - val_acc: 0.9915
Epoch 7/30
- 17s - loss: 0.0566 - acc: 0.9853 - val_loss: 0.0532 - val_acc: 0.9874
Epoch 8/30
- 16s - loss: 0.0516 - acc: 0.9860 - val_loss: 0.0610 - val_acc: 0.9835
Epoch 9/30
- 16s - loss: 0.0295 - acc: 0.9913 - val_loss: 0.0217 - val_acc: 0.9945
Epoch 10/30
- 16s - loss: 0.0208 - acc: 0.9939 - val_loss: 0.0279 - val_acc: 0.9933
Epoch 11/30
- 17s - loss: 0.0208 - acc: 0.9935 - val_loss: 0.0295 - val_acc: 0.9929
Epoch 12/30
- 17s - loss: 0.0174 - acc: 0.9949 - val_loss: 0.0237 - val_acc: 0.9946
Epoch 1/30
- 38s - loss: 0.1528 - acc: 0.9523 - val_loss: 0.0718 - val_acc: 0.9798
Epoch 2/30
- 17s - loss: 0.0783 - acc: 0.9770 - val_loss: 0.1404 - val_acc: 0.9625
Epoch 3/30
- 16s - loss: 0.0572 - acc: 0.9821 - val_loss: 0.0444 - val_acc: 0.9885
Epoch 4/30
- 16s - loss: 0.0511 - acc: 0.9845 - val_loss: 0.0783 - val_acc: 0.9819
Epoch 5/30
- 17s - loss: 0.0486 - acc: 0.9858 - val_loss: 0.0327 - val_acc: 0.9906
Epoch 6/30
- 16s - loss: 0.0443 - acc: 0.9870 - val_loss: 0.0463 - val_acc: 0.9881
Epoch 7/30
- 17s - loss: 0.0375 - acc: 0.9888 - val_loss: 0.0380 - val_acc: 0.9913
Epoch 8/30
- 17s - loss: 0.0223 - acc: 0.9933 - val_loss: 0.0181 - val_acc: 0.9950
Epoch 9/30
- 16s - loss: 0.0164 - acc: 0.9950 - val_loss: 0.0216 - val_acc: 0.9946
Epoch 10/30
- 16s - loss: 0.0158 - acc: 0.9949 - val_loss: 0.0203 - val_acc: 0.9949
Epoch 11/30
- 16s - loss: 0.0126 - acc: 0.9961 - val_loss: 0.0155 - val_acc: 0.9958
Epoch 12/30
- 17s - loss: 0.0109 - acc: 0.9966 - val_loss: 0.0182 - val_acc: 0.9963
Epoch 13/30
- 16s - loss: 0.0099 - acc: 0.9971 - val_loss: 0.0135 - val_acc: 0.9961
Epoch 14/30
- 16s - loss: 0.0096 - acc: 0.9976 - val_loss: 0.0199 - val_acc: 0.9949
Epoch 15/30
- 16s - loss: 0.0089 - acc: 0.9970 - val_loss: 0.0183 - val_acc: 0.9956
Epoch 16/30
- 16s - loss: 0.0085 - acc: 0.9977 - val_loss: 0.0140 - val_acc: 0.9957
Epoch 1/30
- 39s - loss: 0.3061 - acc: 0.9002 - val_loss: 0.0601 - val_acc: 0.9814
Epoch 2/30
- 17s - loss: 0.1151 - acc: 0.9649 - val_loss: 0.1378 - val_acc: 0.9632
Epoch 3/30
- 17s - loss: 0.0940 - acc: 0.9704 - val_loss: 0.0445 - val_acc: 0.9855
Epoch 4/30
- 17s - loss: 0.0835 - acc: 0.9745 - val_loss: 0.0398 - val_acc: 0.9886
Epoch 5/30
- 16s - loss: 0.0738 - acc: 0.9776 - val_loss: 0.0346 - val_acc: 0.9904
Epoch 6/30
- 16s - loss: 0.0686 - acc: 0.9790 - val_loss: 0.0288 - val_acc: 0.9908
Epoch 7/30
- 17s - loss: 0.0665 - acc: 0.9799 - val_loss: 0.0305 - val_acc: 0.9919
Epoch 8/30
- 16s - loss: 0.0599 - acc: 0.9820 - val_loss: 0.0310 - val_acc: 0.9918
Epoch 9/30
- 17s - loss: 0.0444 - acc: 0.9871 - val_loss: 0.0204 - val_acc: 0.9942
Epoch 10/30
- 16s - loss: 0.0370 - acc: 0.9885 - val_loss: 0.0171 - val_acc: 0.9937
Epoch 11/30
- 16s - loss: 0.0323 - acc: 0.9899 - val_loss: 0.0181 - val_acc: 0.9942
Epoch 12/30
- 17s - loss: 0.0312 - acc: 0.9906 - val_loss: 0.0221 - val_acc: 0.9927
Epoch 13/30
- 17s - loss: 0.0324 - acc: 0.9901 - val_loss: 0.0166 - val_acc: 0.9948
Epoch 14/30
- 16s - loss: 0.0268 - acc: 0.9916 - val_loss: 0.0160 - val_acc: 0.9949
Epoch 15/30
- 16s - loss: 0.0264 - acc: 0.9919 - val_loss: 0.0179 - val_acc: 0.9950
Epoch 16/30
- 16s - loss: 0.0229 - acc: 0.9923 - val_loss: 0.0178 - val_acc: 0.9937
Epoch 17/30
- 17s - loss: 0.0245 - acc: 0.9929 - val_loss: 0.0151 - val_acc: 0.9952
Epoch 18/30
- 17s - loss: 0.0237 - acc: 0.9921 - val_loss: 0.0146 - val_acc: 0.9948
Epoch 19/30
- 17s - loss: 0.0245 - acc: 0.9922 - val_loss: 0.0157 - val_acc: 0.9951
Epoch 20/30
- 18s - loss: 0.0217 - acc: 0.9937 - val_loss: 0.0159 - val_acc: 0.9946
Epoch 21/30
- 17s - loss: 0.0225 - acc: 0.9928 - val_loss: 0.0162 - val_acc: 0.9944
Epoch 1/30
- 40s - loss: 0.2175 - acc: 0.9377 - val_loss: 0.1437 - val_acc: 0.9685
Epoch 2/30
- 18s - loss: 0.1121 - acc: 0.9708 - val_loss: 0.1757 - val_acc: 0.9469
Epoch 3/30
- 16s - loss: 0.0851 - acc: 0.9763 - val_loss: 0.1054 - val_acc: 0.9760
Epoch 4/30
- 17s - loss: 0.0679 - acc: 0.9810 - val_loss: 0.0502 - val_acc: 0.9879
Epoch 5/30
- 17s - loss: 0.0605 - acc: 0.9834 - val_loss: 0.0735 - val_acc: 0.9821
Epoch 6/30
- 18s - loss: 0.0534 - acc: 0.9850 - val_loss: 0.0455 - val_acc: 0.9892
Epoch 7/30
- 17s - loss: 0.0467 - acc: 0.9865 - val_loss: 0.0520 - val_acc: 0.9864
Epoch 8/30
- 17s - loss: 0.0438 - acc: 0.9871 - val_loss: 0.0477 - val_acc: 0.9864
Epoch 9/30
- 18s - loss: 0.0246 - acc: 0.9930 - val_loss: 0.0227 - val_acc: 0.9948
Epoch 10/30
- 17s - loss: 0.0193 - acc: 0.9943 - val_loss: 0.0225 - val_acc: 0.9942
Epoch 11/30
- 17s - loss: 0.0183 - acc: 0.9943 - val_loss: 0.0257 - val_acc: 0.9937
Epoch 12/30
- 17s - loss: 0.0184 - acc: 0.9943 - val_loss: 0.0254 - val_acc: 0.9936
Epoch 13/30
- 17s - loss: 0.0129 - acc: 0.9961 - val_loss: 0.0204 - val_acc: 0.9949
Epoch 14/30
- 18s - loss: 0.0119 - acc: 0.9965 - val_loss: 0.0203 - val_acc: 0.9945
Epoch 15/30
- 18s - loss: 0.0113 - acc: 0.9970 - val_loss: 0.0206 - val_acc: 0.9950
Epoch 16/30
- 18s - loss: 0.0081 - acc: 0.9976 - val_loss: 0.0200 - val_acc: 0.9948
Epoch 17/30
- 17s - loss: 0.0084 - acc: 0.9970 - val_loss: 0.0199 - val_acc: 0.9946
Epoch 18/30
- 17s - loss: 0.0087 - acc: 0.9973 - val_loss: 0.0194 - val_acc: 0.9954
Epoch 19/30
- 17s - loss: 0.0085 - acc: 0.9975 - val_loss: 0.0193 - val_acc: 0.9957
Epoch 20/30
- 16s - loss: 0.0074 - acc: 0.9976 - val_loss: 0.0202 - val_acc: 0.9949
Epoch 21/30
- 16s - loss: 0.0082 - acc: 0.9974 - val_loss: 0.0209 - val_acc: 0.9945
Epoch 22/30
- 17s - loss: 0.0077 - acc: 0.9975 - val_loss: 0.0208 - val_acc: 0.9945
Epoch 1/30
- 41s - loss: 0.1596 - acc: 0.9493 - val_loss: 0.0771 - val_acc: 0.9799
Epoch 2/30
- 17s - loss: 0.0727 - acc: 0.9786 - val_loss: 0.0966 - val_acc: 0.9786
Epoch 3/30
- 17s - loss: 0.0607 - acc: 0.9819 - val_loss: 0.0732 - val_acc: 0.9810
Epoch 4/30
- 17s - loss: 0.0499 - acc: 0.9849 - val_loss: 0.0421 - val_acc: 0.9876
Epoch 5/30
- 17s - loss: 0.0465 - acc: 0.9862 - val_loss: 0.0570 - val_acc: 0.9860
Epoch 6/30
- 16s - loss: 0.0430 - acc: 0.9868 - val_loss: 0.0492 - val_acc: 0.9876
Epoch 7/30
- 17s - loss: 0.0224 - acc: 0.9933 - val_loss: 0.0226 - val_acc: 0.9942
Epoch 8/30
- 17s - loss: 0.0176 - acc: 0.9945 - val_loss: 0.0245 - val_acc: 0.9936
Epoch 9/30
- 17s - loss: 0.0169 - acc: 0.9953 - val_loss: 0.0185 - val_acc: 0.9950
Epoch 10/30
- 16s - loss: 0.0152 - acc: 0.9956 - val_loss: 0.0251 - val_acc: 0.9937
Epoch 11/30
- 17s - loss: 0.0142 - acc: 0.9958 - val_loss: 0.0183 - val_acc: 0.9950
Epoch 12/30
- 18s - loss: 0.0151 - acc: 0.9949 - val_loss: 0.0211 - val_acc: 0.9943
Epoch 13/30
- 18s - loss: 0.0148 - acc: 0.9950 - val_loss: 0.0220 - val_acc: 0.9945
Epoch 14/30
- 16s - loss: 0.0100 - acc: 0.9968 - val_loss: 0.0175 - val_acc: 0.9960
Epoch 15/30
- 17s - loss: 0.0089 - acc: 0.9973 - val_loss: 0.0173 - val_acc: 0.9961
Epoch 16/30
- 17s - loss: 0.0077 - acc: 0.9975 - val_loss: 0.0191 - val_acc: 0.9949
Epoch 17/30
- 17s - loss: 0.0086 - acc: 0.9976 - val_loss: 0.0167 - val_acc: 0.9958
Epoch 18/30
- 17s - loss: 0.0075 - acc: 0.9976 - val_loss: 0.0179 - val_acc: 0.9956
Epoch 19/30
- 17s - loss: 0.0081 - acc: 0.9976 - val_loss: 0.0170 - val_acc: 0.9943
Epoch 20/30
- 17s - loss: 0.0080 - acc: 0.9976 - val_loss: 0.0156 - val_acc: 0.9952
Epoch 21/30
- 16s - loss: 0.0064 - acc: 0.9980 - val_loss: 0.0139 - val_acc: 0.9960
Epoch 22/30
- 17s - loss: 0.0058 - acc: 0.9982 - val_loss: 0.0135 - val_acc: 0.9955
Epoch 23/30
- 18s - loss: 0.0050 - acc: 0.9987 - val_loss: 0.0144 - val_acc: 0.9954
Epoch 24/30
- 18s - loss: 0.0054 - acc: 0.9984 - val_loss: 0.0162 - val_acc: 0.9951
Epoch 25/30
- 17s - loss: 0.0055 - acc: 0.9984 - val_loss: 0.0135 - val_acc: 0.9962
100%|██████████| 50/50 [3:55:42<00:00, 378.77s/it, best loss: -0.9966666666666667]
In [12]:
best_params = space_eval(space, best)
print('best hyper params: \n', best_params)
best hyper params:
{'conv1': 128, 'conv2': 128, 'conv3': 32, 'conv4': 32, 'dense1': 512, 'dropout1': 0, 'dropout2': 0, 'dropout3': 0, 'kernel_size_1': 5, 'kernel_size_2': 3, 'kernel_size_3': 3, 'kernel_size_4': 5, 'loss': 'kullback_leibler_divergence', 'opt': 'adam', 'pooling_size_1': 3, 'pooling_size_2': 2}
Huấn luyện lại mô hình với bộ tham số tốt nhất ở trên.
In [13]:
acc, model, history = train_model(train_gen, valid_gen, best_params)
print("validation accuracy: {}".format(acc))
Epoch 1/30
- 43s - loss: 0.1557 - acc: 0.9516 - val_loss: 0.0764 - val_acc: 0.9782
Epoch 2/30
- 17s - loss: 0.0708 - acc: 0.9782 - val_loss: 0.0628 - val_acc: 0.9832
Epoch 3/30
- 17s - loss: 0.0596 - acc: 0.9826 - val_loss: 0.0463 - val_acc: 0.9870
Epoch 4/30
- 17s - loss: 0.0505 - acc: 0.9849 - val_loss: 0.0571 - val_acc: 0.9842
Epoch 5/30
- 17s - loss: 0.0459 - acc: 0.9856 - val_loss: 0.0496 - val_acc: 0.9873
Epoch 6/30
- 17s - loss: 0.0247 - acc: 0.9927 - val_loss: 0.0215 - val_acc: 0.9943
Epoch 7/30
- 17s - loss: 0.0196 - acc: 0.9938 - val_loss: 0.0195 - val_acc: 0.9942
Epoch 8/30
- 17s - loss: 0.0161 - acc: 0.9953 - val_loss: 0.0248 - val_acc: 0.9943
Epoch 9/30
- 17s - loss: 0.0170 - acc: 0.9946 - val_loss: 0.0221 - val_acc: 0.9946
Epoch 10/30
- 17s - loss: 0.0130 - acc: 0.9959 - val_loss: 0.0168 - val_acc: 0.9958
Epoch 11/30
- 17s - loss: 0.0115 - acc: 0.9970 - val_loss: 0.0195 - val_acc: 0.9951
Epoch 12/30
- 17s - loss: 0.0109 - acc: 0.9966 - val_loss: 0.0165 - val_acc: 0.9958
Epoch 13/30
- 17s - loss: 0.0114 - acc: 0.9960 - val_loss: 0.0211 - val_acc: 0.9943
Epoch 14/30
- 17s - loss: 0.0099 - acc: 0.9969 - val_loss: 0.0191 - val_acc: 0.9945
Epoch 15/30
- 17s - loss: 0.0095 - acc: 0.9969 - val_loss: 0.0165 - val_acc: 0.9954
validation accuracy: 0.9936904761904762
Kết quả trên tập validation khá cao với acc > 99%
Mục tiêu của quá trình huấn luyện mô hình ML là giảm độ lỗi của hàm loss function được tính bằng sự khác biệt của giá trị mô hình dự đoán và giá trị thực tế. Để đạt được mục đích này chúng ta thường sử dụng gradient descent. Gradient descent sẽ cập nhật trọng số của mô hình ngược với chiều gradient để giảm độ lỗi của loss function.
Chúng ta sử thường sử dụng 3 optimzer phổ biến sau là adam, sgd, rmsprop để cập nhật trọng số của mô hình. Stochastic Gradient Descent là một biến thể của Gradient Descent, yêu cầu chúng ta phải shuffle dự liệu trước khi huấn luyện. Trong khi đó RMSProp và Adam là 2 optimizer hướng đến việc điều chỉnh learning rate tự động theo quá trình học.
RMSprop (Root mean square propagation) được giới thiệu bởi Geoffrey Hinton. RMSProp giải quyết vấn đề giảm dần learning rate của Adagrad bằng cách chuẩn hóa learning với gradient gần với thời điểm cập nhật mà thôi. Để làm được điều này tác giả chia learning rate cho tổng bình phương gradient giảm dần.
Adam là optimizer phổ biến nhất tại thời điểm hiện tại. Adam cũng tính learning riêng biệt cho từng tham số, tương tự như RMSProp và Adagrad. Adam chuẩn hóa learning của mỗi tham số bằng first và second order moment của gradient.
In [14]:
optimizers = ['rmsprop', 'sgd', 'adam']
hists = []
params = best_params
for optimizer in optimizers:
params['opt'] = optimizer
print("Train with optimizer: {}".format(optimizer))
_, _, history = train_model(train_gen, valid_gen, params)
hists.append((optimizer, history))
Train with optimizer: rmsprop
Epoch 1/30
- 42s - loss: 0.1667 - acc: 0.9488 - val_loss: 0.1342 - val_acc: 0.9690
Epoch 2/30
- 17s - loss: 0.0814 - acc: 0.9774 - val_loss: 0.0725 - val_acc: 0.9790
Epoch 3/30
- 17s - loss: 0.0648 - acc: 0.9825 - val_loss: 0.0563 - val_acc: 0.9851
Epoch 4/30
- 17s - loss: 0.0563 - acc: 0.9844 - val_loss: 0.0644 - val_acc: 0.9887
Epoch 5/30
- 16s - loss: 0.0484 - acc: 0.9871 - val_loss: 0.0777 - val_acc: 0.9849
Epoch 6/30
- 18s - loss: 0.0305 - acc: 0.9923 - val_loss: 0.0277 - val_acc: 0.9951
Epoch 7/30
- 18s - loss: 0.0225 - acc: 0.9941 - val_loss: 0.0271 - val_acc: 0.9939
Epoch 8/30
- 17s - loss: 0.0184 - acc: 0.9947 - val_loss: 0.0242 - val_acc: 0.9958
Epoch 9/30
- 17s - loss: 0.0200 - acc: 0.9948 - val_loss: 0.0264 - val_acc: 0.9951
Epoch 10/30
- 17s - loss: 0.0158 - acc: 0.9956 - val_loss: 0.0263 - val_acc: 0.9955
Epoch 11/30
- 17s - loss: 0.0149 - acc: 0.9960 - val_loss: 0.0279 - val_acc: 0.9943
Train with optimizer: sgd
Epoch 1/30
- 42s - loss: 0.2978 - acc: 0.9222 - val_loss: 0.0897 - val_acc: 0.9752
Epoch 2/30
- 17s - loss: 0.1012 - acc: 0.9732 - val_loss: 0.0592 - val_acc: 0.9830
Epoch 3/30
- 17s - loss: 0.0730 - acc: 0.9799 - val_loss: 0.0516 - val_acc: 0.9840
Epoch 4/30
- 17s - loss: 0.0620 - acc: 0.9826 - val_loss: 0.0544 - val_acc: 0.9843
Epoch 5/30
- 17s - loss: 0.0546 - acc: 0.9846 - val_loss: 0.0456 - val_acc: 0.9865
Epoch 6/30
- 18s - loss: 0.0496 - acc: 0.9852 - val_loss: 0.0383 - val_acc: 0.9893
Epoch 7/30
- 17s - loss: 0.0441 - acc: 0.9869 - val_loss: 0.0514 - val_acc: 0.9852
Epoch 8/30
- 18s - loss: 0.0408 - acc: 0.9876 - val_loss: 0.0281 - val_acc: 0.9914
Epoch 9/30
- 17s - loss: 0.0385 - acc: 0.9888 - val_loss: 0.0301 - val_acc: 0.9919
Epoch 10/30
- 17s - loss: 0.0381 - acc: 0.9892 - val_loss: 0.0300 - val_acc: 0.9923
Epoch 11/30
- 18s - loss: 0.0328 - acc: 0.9906 - val_loss: 0.0287 - val_acc: 0.9924
Train with optimizer: adam
Epoch 1/30
- 44s - loss: 0.1576 - acc: 0.9501 - val_loss: 0.0492 - val_acc: 0.9856
Epoch 2/30
- 18s - loss: 0.0708 - acc: 0.9783 - val_loss: 0.0663 - val_acc: 0.9802
Epoch 3/30
- 17s - loss: 0.0595 - acc: 0.9824 - val_loss: 0.0983 - val_acc: 0.9723
Epoch 4/30
- 16s - loss: 0.0311 - acc: 0.9902 - val_loss: 0.0226 - val_acc: 0.9924
Epoch 5/30
- 17s - loss: 0.0239 - acc: 0.9923 - val_loss: 0.0229 - val_acc: 0.9942
Epoch 6/30
- 16s - loss: 0.0218 - acc: 0.9933 - val_loss: 0.0198 - val_acc: 0.9951
Epoch 7/30
- 17s - loss: 0.0212 - acc: 0.9933 - val_loss: 0.0159 - val_acc: 0.9957
Epoch 8/30
- 18s - loss: 0.0213 - acc: 0.9932 - val_loss: 0.0224 - val_acc: 0.9937
Epoch 9/30
- 17s - loss: 0.0189 - acc: 0.9940 - val_loss: 0.0206 - val_acc: 0.9937
Epoch 10/30
- 17s - loss: 0.0138 - acc: 0.9958 - val_loss: 0.0133 - val_acc: 0.9952
Epoch 11/30
- 18s - loss: 0.0132 - acc: 0.9965 - val_loss: 0.0144 - val_acc: 0.9956
Epoch 12/30
- 18s - loss: 0.0113 - acc: 0.9967 - val_loss: 0.0161 - val_acc: 0.9957
Epoch 13/30
- 16s - loss: 0.0098 - acc: 0.9969 - val_loss: 0.0170 - val_acc: 0.9951
Plot quá trình huấn luyện mô hình với 3 lọai optimizers khác nhau.
In [15]:
for name, history in hists:
plt.plot(history.history['val_acc'], label=name)
plt.legend(loc='best', shadow=True)
plt.tight_layout()
Trong bài toán phân loại nhiều lớp. Chúng ta thường sử dụng 2 loại loss function sau:
Cross entropy được sử dụng phổ biến nhất trong bài toán của chúng ta. Cross entropy loss có nền tảng toán học của maximun likelihood được tính bằng tổng của sự khác biệt giữ giá trị dự đoán và giá trị thực tế của dữ liệu. Cross entropy error tốt nhất khi có giá trị bằng 0.
KL loss (Kullback Leibler Divergence Loss) thể hiện sự khác biệt giữ 2 phân bố xác suất. KL loss bằng 0, chứng tỏ 2 phân bố này hoàn toàn giống nhau.
Cross entropy cho bằng toán phân loại nhiều lớn tương đối giống với KL Loss về mặt toán học, nên có thể xem 2 độ lỗi này là một trong bài toán của chúng ta.
In [16]:
loss_functions = ['categorical_crossentropy', 'kullback_leibler_divergence']
hists = []
params = best_params
for loss_funct in loss_functions:
params['loss'] = loss_funct
print("Train with loss function : {}".format(loss_funct))
_, _, history = train_model(train_gen, valid_gen, params)
hists.append((loss_funct, history))
Train with loss function : categorical_crossentropy
Epoch 1/30
- 44s - loss: 0.1543 - acc: 0.9505 - val_loss: 0.0602 - val_acc: 0.9825
Epoch 2/30
- 17s - loss: 0.0734 - acc: 0.9780 - val_loss: 0.0768 - val_acc: 0.9806
Epoch 3/30
- 18s - loss: 0.0606 - acc: 0.9826 - val_loss: 0.0422 - val_acc: 0.9885
Epoch 4/30
- 17s - loss: 0.0506 - acc: 0.9845 - val_loss: 0.0298 - val_acc: 0.9913
Epoch 5/30
- 18s - loss: 0.0460 - acc: 0.9861 - val_loss: 0.0365 - val_acc: 0.9915
Epoch 6/30
- 17s - loss: 0.0401 - acc: 0.9883 - val_loss: 0.0471 - val_acc: 0.9885
Epoch 7/30
- 17s - loss: 0.0239 - acc: 0.9929 - val_loss: 0.0205 - val_acc: 0.9946
Epoch 8/30
- 18s - loss: 0.0187 - acc: 0.9948 - val_loss: 0.0222 - val_acc: 0.9950
Epoch 9/30
- 17s - loss: 0.0161 - acc: 0.9948 - val_loss: 0.0215 - val_acc: 0.9939
Epoch 10/30
- 17s - loss: 0.0136 - acc: 0.9957 - val_loss: 0.0159 - val_acc: 0.9954
Epoch 11/30
- 18s - loss: 0.0119 - acc: 0.9965 - val_loss: 0.0163 - val_acc: 0.9950
Epoch 12/30
- 18s - loss: 0.0100 - acc: 0.9968 - val_loss: 0.0157 - val_acc: 0.9957
Epoch 13/30
- 18s - loss: 0.0109 - acc: 0.9970 - val_loss: 0.0156 - val_acc: 0.9961
Epoch 14/30
- 18s - loss: 0.0089 - acc: 0.9971 - val_loss: 0.0160 - val_acc: 0.9952
Epoch 15/30
- 18s - loss: 0.0098 - acc: 0.9969 - val_loss: 0.0158 - val_acc: 0.9955
Epoch 16/30
- 17s - loss: 0.0088 - acc: 0.9974 - val_loss: 0.0160 - val_acc: 0.9951
Train with loss function : kullback_leibler_divergence
Epoch 1/30
- 46s - loss: 0.1590 - acc: 0.9510 - val_loss: 0.0868 - val_acc: 0.9736
Epoch 2/30
- 18s - loss: 0.0743 - acc: 0.9772 - val_loss: 0.0935 - val_acc: 0.9723
Epoch 3/30
- 18s - loss: 0.0581 - acc: 0.9829 - val_loss: 0.0340 - val_acc: 0.9906
Epoch 4/30
- 18s - loss: 0.0480 - acc: 0.9854 - val_loss: 0.0650 - val_acc: 0.9839
Epoch 5/30
- 18s - loss: 0.0446 - acc: 0.9874 - val_loss: 0.0482 - val_acc: 0.9867
Epoch 6/30
- 17s - loss: 0.0282 - acc: 0.9914 - val_loss: 0.0165 - val_acc: 0.9964
Epoch 7/30
- 18s - loss: 0.0193 - acc: 0.9938 - val_loss: 0.0253 - val_acc: 0.9937
Epoch 8/30
- 17s - loss: 0.0185 - acc: 0.9940 - val_loss: 0.0180 - val_acc: 0.9943
Epoch 9/30
- 17s - loss: 0.0135 - acc: 0.9955 - val_loss: 0.0182 - val_acc: 0.9952
Plot quá trình huấn luyện mô hình với 2 loại loss function khác nhau.
In [17]:
for name, history in hists:
plt.plot(history.history['val_acc'], label=name)
plt.legend(loc='best', shadow=True)
plt.tight_layout()
Chúng ta thấy rằng không có sự khác biệt rõ rằng về tốc độ hội tụ giữ 2 hàm loss function là cross-entropy và KL loss trong bài toán của chúng ta.
In [18]:
def plot_confusion_matrix(cm, classes,
normalize=False,
title='Confusion matrix',
cmap=plt.cm.Blues):
"""
This function prints and plots the confusion matrix.
Normalization can be applied by setting `normalize=True`.
"""
plt.imshow(cm, interpolation='nearest', cmap=cmap)
plt.title(title)
plt.colorbar()
tick_marks = np.arange(len(classes))
plt.xticks(tick_marks, classes, rotation=45)
plt.yticks(tick_marks, classes)
if normalize:
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
thresh = cm.max() / 2.
for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
plt.text(j, i, cm[i, j],
horizontalalignment="center",
color="white" if cm[i, j] > thresh else "black")
plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')
# Predict the values from the validation dataset
Y_pred = model.predict(X_val)
# Convert predictions classes to one hot vectors
Y_pred_classes = np.argmax(Y_pred,axis = 1)
# Convert validation observations to one hot vectors
Y_true = np.argmax(Y_val,axis = 1)
# compute the confusion matrix
confusion_mtx = confusion_matrix(Y_true, Y_pred_classes)
# plot the confusion matrix
plot_confusion_matrix(confusion_mtx, classes = range(10))
Các giá trị trên đường chéo rất cao, chúng ta mô hình chúng ta có độ chính xác rất tốt. Nhìn vào confusion matrix ở trên, chúng ta có một số nhận xét như sau:
In [19]:
# Display some error results
# Errors are difference between predicted labels and true labels
errors = (Y_pred_classes - Y_true != 0)
Y_pred_classes_errors = Y_pred_classes[errors]
Y_pred_errors = Y_pred[errors]
Y_true_errors = Y_true[errors]
X_val_errors = X_val[errors]
def display_errors(errors_index,img_errors,pred_errors, obs_errors):
""" This function shows 6 images with their predicted and real labels"""
n = 0
nrows = 2
ncols = 3
fig, ax = plt.subplots(nrows,ncols,sharex=True,sharey=True)
for row in range(nrows):
for col in range(ncols):
error = errors_index[n]
ax[row,col].imshow((img_errors[error]).reshape((28,28)))
ax[row,col].set_title("Predicted label :{}\nTrue label :{}".format(pred_errors[error],obs_errors[error]))
n += 1
fig.tight_layout()
# Probabilities of the wrong predicted numbers
Y_pred_errors_prob = np.max(Y_pred_errors,axis = 1)
# Predicted probabilities of the true values in the error set
true_prob_errors = np.diagonal(np.take(Y_pred_errors, Y_true_errors, axis=1))
# Difference between the probability of the predicted label and the true label
delta_pred_true_errors = Y_pred_errors_prob - true_prob_errors
# Sorted list of the delta prob errors
sorted_dela_errors = np.argsort(delta_pred_true_errors)
# Top 6 errors
most_important_errors = sorted_dela_errors[-6:]
# Show the top 6 errors
display_errors(most_important_errors, X_val_errors, Y_pred_classes_errors, Y_true_errors)
Với các mẫu ảnh sai, chúng ta có thể thấy rằng những mẫu này rất khó nhận dạng nhầm lẫn sáng các lớp khác. ví dụ số 9 và 4 hay là 3 và 8
In [20]:
kf = KFold(n_splits=5)
preds = []
for train_index, valid_index in kf.split(X):
X_train, Y_train, X_val, Y_val = X[train_index], Y[train_index], X[valid_index], Y[valid_index]
train_gen = train_aug.flow(X_train, Y_train, batch_size=batch_size)
valid_gen = test_aug.flow(X_val, Y_val, batch_size=batch_size)
acc, model, history = train_model(train_gen, valid_gen, best_params)
pred = model.predict(X_test)
preds.append(pred)
Epoch 1/30
- 41s - loss: 0.1605 - acc: 0.9510 - val_loss: 0.1090 - val_acc: 0.9704
Epoch 2/30
- 18s - loss: 0.0744 - acc: 0.9780 - val_loss: 0.0754 - val_acc: 0.9787
Epoch 3/30
- 17s - loss: 0.0538 - acc: 0.9839 - val_loss: 0.0673 - val_acc: 0.9818
Epoch 4/30
- 17s - loss: 0.0577 - acc: 0.9837 - val_loss: 0.0437 - val_acc: 0.9864
Epoch 5/30
- 17s - loss: 0.0434 - acc: 0.9868 - val_loss: 0.0358 - val_acc: 0.9901
Epoch 6/30
- 17s - loss: 0.0433 - acc: 0.9873 - val_loss: 0.0448 - val_acc: 0.9877
Epoch 7/30
- 16s - loss: 0.0363 - acc: 0.9893 - val_loss: 0.0391 - val_acc: 0.9907
Epoch 8/30
- 17s - loss: 0.0214 - acc: 0.9934 - val_loss: 0.0252 - val_acc: 0.9926
Epoch 9/30
- 17s - loss: 0.0169 - acc: 0.9946 - val_loss: 0.0249 - val_acc: 0.9927
Epoch 10/30
- 18s - loss: 0.0145 - acc: 0.9957 - val_loss: 0.0328 - val_acc: 0.9907
Epoch 11/30
- 17s - loss: 0.0152 - acc: 0.9951 - val_loss: 0.0212 - val_acc: 0.9935
Epoch 12/30
- 18s - loss: 0.0160 - acc: 0.9950 - val_loss: 0.0283 - val_acc: 0.9925
Epoch 13/30
- 17s - loss: 0.0128 - acc: 0.9959 - val_loss: 0.0228 - val_acc: 0.9937
Epoch 14/30
- 18s - loss: 0.0096 - acc: 0.9973 - val_loss: 0.0217 - val_acc: 0.9939
Epoch 1/30
- 43s - loss: 0.1577 - acc: 0.9516 - val_loss: 0.0594 - val_acc: 0.9850
Epoch 2/30
- 17s - loss: 0.0745 - acc: 0.9779 - val_loss: 0.0811 - val_acc: 0.9805
Epoch 3/30
- 18s - loss: 0.0598 - acc: 0.9817 - val_loss: 0.0641 - val_acc: 0.9839
Epoch 4/30
- 18s - loss: 0.0299 - acc: 0.9910 - val_loss: 0.0282 - val_acc: 0.9912
Epoch 5/30
- 17s - loss: 0.0229 - acc: 0.9932 - val_loss: 0.0210 - val_acc: 0.9944
Epoch 6/30
- 18s - loss: 0.0216 - acc: 0.9929 - val_loss: 0.0273 - val_acc: 0.9924
Epoch 7/30
- 17s - loss: 0.0214 - acc: 0.9935 - val_loss: 0.0249 - val_acc: 0.9929
Epoch 8/30
- 17s - loss: 0.0148 - acc: 0.9953 - val_loss: 0.0191 - val_acc: 0.9946
Epoch 9/30
- 18s - loss: 0.0127 - acc: 0.9960 - val_loss: 0.0201 - val_acc: 0.9940
Epoch 10/30
- 17s - loss: 0.0132 - acc: 0.9963 - val_loss: 0.0197 - val_acc: 0.9945
Epoch 11/30
- 17s - loss: 0.0113 - acc: 0.9963 - val_loss: 0.0190 - val_acc: 0.9951
Epoch 12/30
- 18s - loss: 0.0106 - acc: 0.9972 - val_loss: 0.0190 - val_acc: 0.9944
Epoch 13/30
- 17s - loss: 0.0107 - acc: 0.9967 - val_loss: 0.0185 - val_acc: 0.9949
Epoch 14/30
- 17s - loss: 0.0107 - acc: 0.9968 - val_loss: 0.0180 - val_acc: 0.9956
Epoch 15/30
- 18s - loss: 0.0096 - acc: 0.9970 - val_loss: 0.0185 - val_acc: 0.9952
Epoch 16/30
- 18s - loss: 0.0088 - acc: 0.9974 - val_loss: 0.0182 - val_acc: 0.9955
Epoch 17/30
- 18s - loss: 0.0089 - acc: 0.9976 - val_loss: 0.0182 - val_acc: 0.9955
Epoch 1/30
- 47s - loss: 0.1586 - acc: 0.9507 - val_loss: 0.1703 - val_acc: 0.9568
Epoch 2/30
- 17s - loss: 0.0760 - acc: 0.9769 - val_loss: 0.0712 - val_acc: 0.9842
Epoch 3/30
- 18s - loss: 0.0575 - acc: 0.9832 - val_loss: 0.0607 - val_acc: 0.9860
Epoch 4/30
- 19s - loss: 0.0477 - acc: 0.9855 - val_loss: 0.0382 - val_acc: 0.9879
Epoch 5/30
- 18s - loss: 0.0472 - acc: 0.9859 - val_loss: 0.0358 - val_acc: 0.9902
Epoch 6/30
- 18s - loss: 0.0426 - acc: 0.9872 - val_loss: 0.0674 - val_acc: 0.9796
Epoch 7/30
- 18s - loss: 0.0361 - acc: 0.9892 - val_loss: 0.0361 - val_acc: 0.9914
Epoch 8/30
- 18s - loss: 0.0224 - acc: 0.9935 - val_loss: 0.0275 - val_acc: 0.9939
Epoch 9/30
- 18s - loss: 0.0164 - acc: 0.9947 - val_loss: 0.0233 - val_acc: 0.9939
Epoch 10/30
- 17s - loss: 0.0141 - acc: 0.9956 - val_loss: 0.0222 - val_acc: 0.9943
Epoch 11/30
- 17s - loss: 0.0150 - acc: 0.9954 - val_loss: 0.0254 - val_acc: 0.9932
Epoch 12/30
- 18s - loss: 0.0141 - acc: 0.9957 - val_loss: 0.0301 - val_acc: 0.9926
Epoch 13/30
- 18s - loss: 0.0103 - acc: 0.9969 - val_loss: 0.0232 - val_acc: 0.9938
Epoch 1/30
- 46s - loss: 0.1574 - acc: 0.9497 - val_loss: 0.1697 - val_acc: 0.9568
Epoch 2/30
- 18s - loss: 0.0715 - acc: 0.9782 - val_loss: 0.0979 - val_acc: 0.9751
Epoch 3/30
- 17s - loss: 0.0613 - acc: 0.9819 - val_loss: 0.0497 - val_acc: 0.9844
Epoch 4/30
- 18s - loss: 0.0509 - acc: 0.9849 - val_loss: 0.0696 - val_acc: 0.9800
Epoch 5/30
- 18s - loss: 0.0426 - acc: 0.9871 - val_loss: 0.0431 - val_acc: 0.9881
Epoch 6/30
- 18s - loss: 0.0387 - acc: 0.9874 - val_loss: 0.0418 - val_acc: 0.9905
Epoch 7/30
- 18s - loss: 0.0410 - acc: 0.9879 - val_loss: 0.0347 - val_acc: 0.9915
Epoch 8/30
- 18s - loss: 0.0382 - acc: 0.9882 - val_loss: 0.0553 - val_acc: 0.9883
Epoch 9/30
- 18s - loss: 0.0360 - acc: 0.9897 - val_loss: 0.0294 - val_acc: 0.9912
Epoch 10/30
- 18s - loss: 0.0340 - acc: 0.9899 - val_loss: 0.0279 - val_acc: 0.9920
Epoch 11/30
- 18s - loss: 0.0294 - acc: 0.9909 - val_loss: 0.0483 - val_acc: 0.9886
Epoch 12/30
- 18s - loss: 0.0308 - acc: 0.9903 - val_loss: 0.0374 - val_acc: 0.9924
Epoch 13/30
- 19s - loss: 0.0154 - acc: 0.9952 - val_loss: 0.0220 - val_acc: 0.9943
Epoch 14/30
- 19s - loss: 0.0110 - acc: 0.9967 - val_loss: 0.0219 - val_acc: 0.9952
Epoch 15/30
- 18s - loss: 0.0100 - acc: 0.9969 - val_loss: 0.0211 - val_acc: 0.9942
Epoch 16/30
- 18s - loss: 0.0101 - acc: 0.9969 - val_loss: 0.0230 - val_acc: 0.9945
Epoch 17/30
- 18s - loss: 0.0116 - acc: 0.9964 - val_loss: 0.0209 - val_acc: 0.9943
Epoch 18/30
- 18s - loss: 0.0093 - acc: 0.9971 - val_loss: 0.0286 - val_acc: 0.9933
Epoch 19/30
- 17s - loss: 0.0099 - acc: 0.9967 - val_loss: 0.0191 - val_acc: 0.9940
Epoch 20/30
- 18s - loss: 0.0115 - acc: 0.9965 - val_loss: 0.0244 - val_acc: 0.9942
Epoch 21/30
- 19s - loss: 0.0095 - acc: 0.9968 - val_loss: 0.0193 - val_acc: 0.9955
Epoch 22/30
- 18s - loss: 0.0064 - acc: 0.9979 - val_loss: 0.0182 - val_acc: 0.9951
Epoch 23/30
- 18s - loss: 0.0065 - acc: 0.9980 - val_loss: 0.0200 - val_acc: 0.9954
Epoch 24/30
- 18s - loss: 0.0056 - acc: 0.9983 - val_loss: 0.0199 - val_acc: 0.9949
Epoch 25/30
- 18s - loss: 0.0056 - acc: 0.9982 - val_loss: 0.0193 - val_acc: 0.9952
Epoch 1/30
- 47s - loss: 0.1594 - acc: 0.9504 - val_loss: 0.0880 - val_acc: 0.9733
Epoch 2/30
- 18s - loss: 0.0724 - acc: 0.9779 - val_loss: 0.0653 - val_acc: 0.9835
Epoch 3/30
- 17s - loss: 0.0589 - acc: 0.9827 - val_loss: 0.0463 - val_acc: 0.9896
Epoch 4/30
- 17s - loss: 0.0504 - acc: 0.9853 - val_loss: 0.0393 - val_acc: 0.9900
Epoch 5/30
- 17s - loss: 0.0556 - acc: 0.9836 - val_loss: 0.0496 - val_acc: 0.9874
Epoch 6/30
- 18s - loss: 0.0419 - acc: 0.9879 - val_loss: 0.0629 - val_acc: 0.9830
Epoch 7/30
- 19s - loss: 0.0230 - acc: 0.9926 - val_loss: 0.0227 - val_acc: 0.9949
Epoch 8/30
- 18s - loss: 0.0182 - acc: 0.9944 - val_loss: 0.0201 - val_acc: 0.9955
Epoch 9/30
- 17s - loss: 0.0168 - acc: 0.9945 - val_loss: 0.0234 - val_acc: 0.9944
Epoch 10/30
- 18s - loss: 0.0159 - acc: 0.9947 - val_loss: 0.0230 - val_acc: 0.9938
Epoch 11/30
- 18s - loss: 0.0121 - acc: 0.9961 - val_loss: 0.0216 - val_acc: 0.9952
In [21]:
# predict results
results = np.mean(preds, axis=0)
# select the indix with the maximum probability
results = np.argmax(results,axis = 1)
results = pd.Series(results,name="Label")
In [22]:
submission = pd.concat([pd.Series(range(1,28001),name = "ImageId"),results],axis = 1)
submission.to_csv("cnn_mnist_datagen.csv",index=False)
Lúc chạy thực tế, cần thay max_evals lúc search tham số thành 50 để có được accuracy trên tập test > 0.997. Kết quả dưới đây được submit trên kaggle mà không sử dụng kfold
In [ ]:
Content source: pbcquoc/pbcquoc.github.io
Similar notebooks: