Keras Upgrade
!pip install keras-nightly
Collecting keras-nightly
Downloading keras_nightly-3.7.0.dev2025010203-py3-none-any.whl.metadata (5.8 kB)
Requirement already satisfied: absl-py in /usr/local/lib/python3.10/dist-packages (from keras-nightly) (1.4.0)
Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from keras-nightly) (1.26.4)
Requirement already satisfied: rich in /usr/local/lib/python3.10/dist-packages (from keras-nightly) (13.9.4)
Requirement already satisfied: namex in /usr/local/lib/python3.10/dist-packages (from keras-nightly) (0.0.8)
Requirement already satisfied: h5py in /usr/local/lib/python3.10/dist-packages (from keras-nightly) (3.12.1)
Requirement already satisfied: optree in /usr/local/lib/python3.10/dist-packages (from keras-nightly) (0.13.1)
Requirement already satisfied: ml-dtypes in /usr/local/lib/python3.10/dist-packages (from keras-nightly) (0.4.1)
Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from keras-nightly) (24.2)
Requirement already satisfied: typing-extensions>=4.5.0 in /usr/local/lib/python3.10/dist-packages (from optree->keras-nightly) (4.12.2)
Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich->keras-nightly) (3.0.0)
Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich->keras-nightly) (2.18.0)
Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py>=2.2.0->rich->keras-nightly) (0.1.2)
Downloading keras_nightly-3.7.0.dev2025010203-py3-none-any.whl (1.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 10.9 MB/s eta 0:00:00
Installing collected packages: keras-nightly
Successfully installed keras-nightly-3.7.0.dev2025010203
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import random as rd
from sklearn.metrics import accuracy\_score
import keras
(train_x, train_y), (test_x, test_y) = keras.datasets.cifar10.load_data()
Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
170498071/170498071 ━━━━━━━━━━━━━━━━━━━━ 3s 0us/step
labels = {0 : 'Airplane',
1 : 'Automobile',
2 : 'Bird',
3 : 'Cat',
4 : 'Deer',
5 : 'Dog',
6 : 'Frog',
7 : 'Horse',
8 : 'Ship',
9 : 'Truck' }
'''
Ctrl+Enter를 이용하여
반복 실행 해보자!
'''
id = rd.randrange(0,10000)
print(f'id = {id}')
print(f'다음 그림은 {labels[test_y[id][0]]} 입니다.')
plt.imshow(test_x[id])
plt.show()
train_x.shape, train_y.shape
((50000, 32, 32, 3), (50000, 1))
Transfer Learning
from keras.applications.resnet50 import ResNet50
from keras.applications.resnet50 import preprocess_input, decode_predictions
keras.utils.clear_session()
base_model = ResNet50(include_top=False,
weights='imagenet',
input_shape=(32,32,3),
pooling='avg',
)
output_layer = keras.layers.Dense(10, activation='softmax')(base_model.output)
new_model = keras.models.Model(base_model.input, output_layer)
new_model.summary()
Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5
94765736/94765736 ━━━━━━━━━━━━━━━━━━━━ 1s 0us/step
Model: "functional"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Layer (type) ┃ Output Shape ┃ Param # ┃ Connected to ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
│ input_layer (InputLayer) │ (None, 32, 32, 3) │ 0 │ - │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv1_pad (ZeroPadding2D) │ (None, 38, 38, 3) │ 0 │ input_layer[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv1_conv (Conv2D) │ (None, 16, 16, 64) │ 9,472 │ conv1_pad[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv1_bn │ (None, 16, 16, 64) │ 256 │ conv1_conv[0][0] │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv1_relu (Activation) │ (None, 16, 16, 64) │ 0 │ conv1_bn[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ pool1_pad (ZeroPadding2D) │ (None, 18, 18, 64) │ 0 │ conv1_relu[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ pool1_pool (MaxPooling2D) │ (None, 8, 8, 64) │ 0 │ pool1_pad[0][0] │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_1_conv │ (None, 8, 8, 64) │ 4,160 │ pool1_pool[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_1_bn │ (None, 8, 8, 64) │ 256 │ conv2_block1_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_1_relu │ (None, 8, 8, 64) │ 0 │ conv2_block1_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_2_conv │ (None, 8, 8, 64) │ 36,928 │ conv2_block1_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_2_bn │ (None, 8, 8, 64) │ 256 │ conv2_block1_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_2_relu │ (None, 8, 8, 64) │ 0 │ conv2_block1_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_0_conv │ (None, 8, 8, 256) │ 16,640 │ pool1_pool[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_3_conv │ (None, 8, 8, 256) │ 16,640 │ conv2_block1_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_0_bn │ (None, 8, 8, 256) │ 1,024 │ conv2_block1_0_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_3_bn │ (None, 8, 8, 256) │ 1,024 │ conv2_block1_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_add (Add) │ (None, 8, 8, 256) │ 0 │ conv2_block1_0_bn[0][… │
│ │ │ │ conv2_block1_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block1_out │ (None, 8, 8, 256) │ 0 │ conv2_block1_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_1_conv │ (None, 8, 8, 64) │ 16,448 │ conv2_block1_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_1_bn │ (None, 8, 8, 64) │ 256 │ conv2_block2_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_1_relu │ (None, 8, 8, 64) │ 0 │ conv2_block2_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_2_conv │ (None, 8, 8, 64) │ 36,928 │ conv2_block2_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_2_bn │ (None, 8, 8, 64) │ 256 │ conv2_block2_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_2_relu │ (None, 8, 8, 64) │ 0 │ conv2_block2_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_3_conv │ (None, 8, 8, 256) │ 16,640 │ conv2_block2_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_3_bn │ (None, 8, 8, 256) │ 1,024 │ conv2_block2_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_add (Add) │ (None, 8, 8, 256) │ 0 │ conv2_block1_out[0][0… │
│ │ │ │ conv2_block2_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block2_out │ (None, 8, 8, 256) │ 0 │ conv2_block2_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_1_conv │ (None, 8, 8, 64) │ 16,448 │ conv2_block2_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_1_bn │ (None, 8, 8, 64) │ 256 │ conv2_block3_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_1_relu │ (None, 8, 8, 64) │ 0 │ conv2_block3_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_2_conv │ (None, 8, 8, 64) │ 36,928 │ conv2_block3_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_2_bn │ (None, 8, 8, 64) │ 256 │ conv2_block3_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_2_relu │ (None, 8, 8, 64) │ 0 │ conv2_block3_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_3_conv │ (None, 8, 8, 256) │ 16,640 │ conv2_block3_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_3_bn │ (None, 8, 8, 256) │ 1,024 │ conv2_block3_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_add (Add) │ (None, 8, 8, 256) │ 0 │ conv2_block2_out[0][0… │
│ │ │ │ conv2_block3_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv2_block3_out │ (None, 8, 8, 256) │ 0 │ conv2_block3_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_1_conv │ (None, 4, 4, 128) │ 32,896 │ conv2_block3_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_1_bn │ (None, 4, 4, 128) │ 512 │ conv3_block1_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_1_relu │ (None, 4, 4, 128) │ 0 │ conv3_block1_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_2_conv │ (None, 4, 4, 128) │ 147,584 │ conv3_block1_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_2_bn │ (None, 4, 4, 128) │ 512 │ conv3_block1_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_2_relu │ (None, 4, 4, 128) │ 0 │ conv3_block1_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_0_conv │ (None, 4, 4, 512) │ 131,584 │ conv2_block3_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_3_conv │ (None, 4, 4, 512) │ 66,048 │ conv3_block1_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_0_bn │ (None, 4, 4, 512) │ 2,048 │ conv3_block1_0_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_3_bn │ (None, 4, 4, 512) │ 2,048 │ conv3_block1_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_add (Add) │ (None, 4, 4, 512) │ 0 │ conv3_block1_0_bn[0][… │
│ │ │ │ conv3_block1_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block1_out │ (None, 4, 4, 512) │ 0 │ conv3_block1_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_1_conv │ (None, 4, 4, 128) │ 65,664 │ conv3_block1_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_1_bn │ (None, 4, 4, 128) │ 512 │ conv3_block2_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_1_relu │ (None, 4, 4, 128) │ 0 │ conv3_block2_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_2_conv │ (None, 4, 4, 128) │ 147,584 │ conv3_block2_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_2_bn │ (None, 4, 4, 128) │ 512 │ conv3_block2_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_2_relu │ (None, 4, 4, 128) │ 0 │ conv3_block2_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_3_conv │ (None, 4, 4, 512) │ 66,048 │ conv3_block2_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_3_bn │ (None, 4, 4, 512) │ 2,048 │ conv3_block2_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_add (Add) │ (None, 4, 4, 512) │ 0 │ conv3_block1_out[0][0… │
│ │ │ │ conv3_block2_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block2_out │ (None, 4, 4, 512) │ 0 │ conv3_block2_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_1_conv │ (None, 4, 4, 128) │ 65,664 │ conv3_block2_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_1_bn │ (None, 4, 4, 128) │ 512 │ conv3_block3_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_1_relu │ (None, 4, 4, 128) │ 0 │ conv3_block3_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_2_conv │ (None, 4, 4, 128) │ 147,584 │ conv3_block3_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_2_bn │ (None, 4, 4, 128) │ 512 │ conv3_block3_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_2_relu │ (None, 4, 4, 128) │ 0 │ conv3_block3_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_3_conv │ (None, 4, 4, 512) │ 66,048 │ conv3_block3_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_3_bn │ (None, 4, 4, 512) │ 2,048 │ conv3_block3_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_add (Add) │ (None, 4, 4, 512) │ 0 │ conv3_block2_out[0][0… │
│ │ │ │ conv3_block3_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block3_out │ (None, 4, 4, 512) │ 0 │ conv3_block3_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_1_conv │ (None, 4, 4, 128) │ 65,664 │ conv3_block3_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_1_bn │ (None, 4, 4, 128) │ 512 │ conv3_block4_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_1_relu │ (None, 4, 4, 128) │ 0 │ conv3_block4_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_2_conv │ (None, 4, 4, 128) │ 147,584 │ conv3_block4_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_2_bn │ (None, 4, 4, 128) │ 512 │ conv3_block4_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_2_relu │ (None, 4, 4, 128) │ 0 │ conv3_block4_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_3_conv │ (None, 4, 4, 512) │ 66,048 │ conv3_block4_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_3_bn │ (None, 4, 4, 512) │ 2,048 │ conv3_block4_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_add (Add) │ (None, 4, 4, 512) │ 0 │ conv3_block3_out[0][0… │
│ │ │ │ conv3_block4_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv3_block4_out │ (None, 4, 4, 512) │ 0 │ conv3_block4_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_1_conv │ (None, 2, 2, 256) │ 131,328 │ conv3_block4_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_1_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block1_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_1_relu │ (None, 2, 2, 256) │ 0 │ conv4_block1_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_2_conv │ (None, 2, 2, 256) │ 590,080 │ conv4_block1_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_2_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block1_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_2_relu │ (None, 2, 2, 256) │ 0 │ conv4_block1_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_0_conv │ (None, 2, 2, 1024) │ 525,312 │ conv3_block4_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_3_conv │ (None, 2, 2, 1024) │ 263,168 │ conv4_block1_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_0_bn │ (None, 2, 2, 1024) │ 4,096 │ conv4_block1_0_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_3_bn │ (None, 2, 2, 1024) │ 4,096 │ conv4_block1_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_add (Add) │ (None, 2, 2, 1024) │ 0 │ conv4_block1_0_bn[0][… │
│ │ │ │ conv4_block1_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block1_out │ (None, 2, 2, 1024) │ 0 │ conv4_block1_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_1_conv │ (None, 2, 2, 256) │ 262,400 │ conv4_block1_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_1_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block2_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_1_relu │ (None, 2, 2, 256) │ 0 │ conv4_block2_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_2_conv │ (None, 2, 2, 256) │ 590,080 │ conv4_block2_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_2_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block2_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_2_relu │ (None, 2, 2, 256) │ 0 │ conv4_block2_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_3_conv │ (None, 2, 2, 1024) │ 263,168 │ conv4_block2_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_3_bn │ (None, 2, 2, 1024) │ 4,096 │ conv4_block2_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_add (Add) │ (None, 2, 2, 1024) │ 0 │ conv4_block1_out[0][0… │
│ │ │ │ conv4_block2_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block2_out │ (None, 2, 2, 1024) │ 0 │ conv4_block2_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_1_conv │ (None, 2, 2, 256) │ 262,400 │ conv4_block2_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_1_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block3_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_1_relu │ (None, 2, 2, 256) │ 0 │ conv4_block3_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_2_conv │ (None, 2, 2, 256) │ 590,080 │ conv4_block3_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_2_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block3_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_2_relu │ (None, 2, 2, 256) │ 0 │ conv4_block3_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_3_conv │ (None, 2, 2, 1024) │ 263,168 │ conv4_block3_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_3_bn │ (None, 2, 2, 1024) │ 4,096 │ conv4_block3_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_add (Add) │ (None, 2, 2, 1024) │ 0 │ conv4_block2_out[0][0… │
│ │ │ │ conv4_block3_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block3_out │ (None, 2, 2, 1024) │ 0 │ conv4_block3_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_1_conv │ (None, 2, 2, 256) │ 262,400 │ conv4_block3_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_1_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block4_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_1_relu │ (None, 2, 2, 256) │ 0 │ conv4_block4_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_2_conv │ (None, 2, 2, 256) │ 590,080 │ conv4_block4_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_2_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block4_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_2_relu │ (None, 2, 2, 256) │ 0 │ conv4_block4_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_3_conv │ (None, 2, 2, 1024) │ 263,168 │ conv4_block4_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_3_bn │ (None, 2, 2, 1024) │ 4,096 │ conv4_block4_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_add (Add) │ (None, 2, 2, 1024) │ 0 │ conv4_block3_out[0][0… │
│ │ │ │ conv4_block4_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block4_out │ (None, 2, 2, 1024) │ 0 │ conv4_block4_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_1_conv │ (None, 2, 2, 256) │ 262,400 │ conv4_block4_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_1_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block5_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_1_relu │ (None, 2, 2, 256) │ 0 │ conv4_block5_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_2_conv │ (None, 2, 2, 256) │ 590,080 │ conv4_block5_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_2_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block5_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_2_relu │ (None, 2, 2, 256) │ 0 │ conv4_block5_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_3_conv │ (None, 2, 2, 1024) │ 263,168 │ conv4_block5_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_3_bn │ (None, 2, 2, 1024) │ 4,096 │ conv4_block5_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_add (Add) │ (None, 2, 2, 1024) │ 0 │ conv4_block4_out[0][0… │
│ │ │ │ conv4_block5_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block5_out │ (None, 2, 2, 1024) │ 0 │ conv4_block5_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_1_conv │ (None, 2, 2, 256) │ 262,400 │ conv4_block5_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_1_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block6_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_1_relu │ (None, 2, 2, 256) │ 0 │ conv4_block6_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_2_conv │ (None, 2, 2, 256) │ 590,080 │ conv4_block6_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_2_bn │ (None, 2, 2, 256) │ 1,024 │ conv4_block6_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_2_relu │ (None, 2, 2, 256) │ 0 │ conv4_block6_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_3_conv │ (None, 2, 2, 1024) │ 263,168 │ conv4_block6_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_3_bn │ (None, 2, 2, 1024) │ 4,096 │ conv4_block6_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_add (Add) │ (None, 2, 2, 1024) │ 0 │ conv4_block5_out[0][0… │
│ │ │ │ conv4_block6_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv4_block6_out │ (None, 2, 2, 1024) │ 0 │ conv4_block6_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_1_conv │ (None, 1, 1, 512) │ 524,800 │ conv4_block6_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_1_bn │ (None, 1, 1, 512) │ 2,048 │ conv5_block1_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_1_relu │ (None, 1, 1, 512) │ 0 │ conv5_block1_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_2_conv │ (None, 1, 1, 512) │ 2,359,808 │ conv5_block1_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_2_bn │ (None, 1, 1, 512) │ 2,048 │ conv5_block1_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_2_relu │ (None, 1, 1, 512) │ 0 │ conv5_block1_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_0_conv │ (None, 1, 1, 2048) │ 2,099,200 │ conv4_block6_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_3_conv │ (None, 1, 1, 2048) │ 1,050,624 │ conv5_block1_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_0_bn │ (None, 1, 1, 2048) │ 8,192 │ conv5_block1_0_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_3_bn │ (None, 1, 1, 2048) │ 8,192 │ conv5_block1_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_add (Add) │ (None, 1, 1, 2048) │ 0 │ conv5_block1_0_bn[0][… │
│ │ │ │ conv5_block1_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block1_out │ (None, 1, 1, 2048) │ 0 │ conv5_block1_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_1_conv │ (None, 1, 1, 512) │ 1,049,088 │ conv5_block1_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_1_bn │ (None, 1, 1, 512) │ 2,048 │ conv5_block2_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_1_relu │ (None, 1, 1, 512) │ 0 │ conv5_block2_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_2_conv │ (None, 1, 1, 512) │ 2,359,808 │ conv5_block2_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_2_bn │ (None, 1, 1, 512) │ 2,048 │ conv5_block2_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_2_relu │ (None, 1, 1, 512) │ 0 │ conv5_block2_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_3_conv │ (None, 1, 1, 2048) │ 1,050,624 │ conv5_block2_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_3_bn │ (None, 1, 1, 2048) │ 8,192 │ conv5_block2_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_add (Add) │ (None, 1, 1, 2048) │ 0 │ conv5_block1_out[0][0… │
│ │ │ │ conv5_block2_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block2_out │ (None, 1, 1, 2048) │ 0 │ conv5_block2_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_1_conv │ (None, 1, 1, 512) │ 1,049,088 │ conv5_block2_out[0][0] │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_1_bn │ (None, 1, 1, 512) │ 2,048 │ conv5_block3_1_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_1_relu │ (None, 1, 1, 512) │ 0 │ conv5_block3_1_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_2_conv │ (None, 1, 1, 512) │ 2,359,808 │ conv5_block3_1_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_2_bn │ (None, 1, 1, 512) │ 2,048 │ conv5_block3_2_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_2_relu │ (None, 1, 1, 512) │ 0 │ conv5_block3_2_bn[0][… │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_3_conv │ (None, 1, 1, 2048) │ 1,050,624 │ conv5_block3_2_relu[0… │
│ (Conv2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_3_bn │ (None, 1, 1, 2048) │ 8,192 │ conv5_block3_3_conv[0… │
│ (BatchNormalization) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_add (Add) │ (None, 1, 1, 2048) │ 0 │ conv5_block2_out[0][0… │
│ │ │ │ conv5_block3_3_bn[0][… │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ conv5_block3_out │ (None, 1, 1, 2048) │ 0 │ conv5_block3_add[0][0] │
│ (Activation) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ avg_pool │ (None, 2048) │ 0 │ conv5_block3_out[0][0] │
│ (GlobalAveragePooling2D) │ │ │ │
├───────────────────────────┼────────────────────────┼────────────────┼────────────────────────┤
│ dense (Dense) │ (None, 10) │ 20,490 │ avg_pool[0][0] │
└───────────────────────────┴────────────────────────┴────────────────┴────────────────────────┘
Total params: 23,608,202 (90.06 MB)
Trainable params: 23,555,082 (89.86 MB)
Non-trainable params: 53,120 (207.50 KB)
new_model.layers
[<InputLayer name=input_layer, built=True>,
<ZeroPadding2D name=conv1_pad, built=True>,
<Conv2D name=conv1_conv, built=True>,
<BatchNormalization name=conv1_bn, built=True>,
<Activation name=conv1_relu, built=True>,
<ZeroPadding2D name=pool1_pad, built=True>,
<MaxPooling2D name=pool1_pool, built=True>,
<Conv2D name=conv2_block1_1_conv, built=True>,
<BatchNormalization name=conv2_block1_1_bn, built=True>,
<Activation name=conv2_block1_1_relu, built=True>,
<Conv2D name=conv2_block1_2_conv, built=True>,
<BatchNormalization name=conv2_block1_2_bn, built=True>,
<Activation name=conv2_block1_2_relu, built=True>,
<Conv2D name=conv2_block1_0_conv, built=True>,
<Conv2D name=conv2_block1_3_conv, built=True>,
<BatchNormalization name=conv2_block1_0_bn, built=True>,
<BatchNormalization name=conv2_block1_3_bn, built=True>,
<Add name=conv2_block1_add, built=True>,
<Activation name=conv2_block1_out, built=True>,
<Conv2D name=conv2_block2_1_conv, built=True>,
<BatchNormalization name=conv2_block2_1_bn, built=True>,
<Activation name=conv2_block2_1_relu, built=True>,
<Conv2D name=conv2_block2_2_conv, built=True>,
<BatchNormalization name=conv2_block2_2_bn, built=True>,
<Activation name=conv2_block2_2_relu, built=True>,
<Conv2D name=conv2_block2_3_conv, built=True>,
<BatchNormalization name=conv2_block2_3_bn, built=True>,
<Add name=conv2_block2_add, built=True>,
<Activation name=conv2_block2_out, built=True>,
<Conv2D name=conv2_block3_1_conv, built=True>,
<BatchNormalization name=conv2_block3_1_bn, built=True>,
<Activation name=conv2_block3_1_relu, built=True>,
<Conv2D name=conv2_block3_2_conv, built=True>,
<BatchNormalization name=conv2_block3_2_bn, built=True>,
<Activation name=conv2_block3_2_relu, built=True>,
<Conv2D name=conv2_block3_3_conv, built=True>,
<BatchNormalization name=conv2_block3_3_bn, built=True>,
<Add name=conv2_block3_add, built=True>,
<Activation name=conv2_block3_out, built=True>,
<Conv2D name=conv3_block1_1_conv, built=True>,
<BatchNormalization name=conv3_block1_1_bn, built=True>,
<Activation name=conv3_block1_1_relu, built=True>,
<Conv2D name=conv3_block1_2_conv, built=True>,
<BatchNormalization name=conv3_block1_2_bn, built=True>,
<Activation name=conv3_block1_2_relu, built=True>,
<Conv2D name=conv3_block1_0_conv, built=True>,
<Conv2D name=conv3_block1_3_conv, built=True>,
<BatchNormalization name=conv3_block1_0_bn, built=True>,
<BatchNormalization name=conv3_block1_3_bn, built=True>,
<Add name=conv3_block1_add, built=True>,
<Activation name=conv3_block1_out, built=True>,
<Conv2D name=conv3_block2_1_conv, built=True>,
<BatchNormalization name=conv3_block2_1_bn, built=True>,
<Activation name=conv3_block2_1_relu, built=True>,
<Conv2D name=conv3_block2_2_conv, built=True>,
<BatchNormalization name=conv3_block2_2_bn, built=True>,
<Activation name=conv3_block2_2_relu, built=True>,
<Conv2D name=conv3_block2_3_conv, built=True>,
<BatchNormalization name=conv3_block2_3_bn, built=True>,
<Add name=conv3_block2_add, built=True>,
<Activation name=conv3_block2_out, built=True>,
<Conv2D name=conv3_block3_1_conv, built=True>,
<BatchNormalization name=conv3_block3_1_bn, built=True>,
<Activation name=conv3_block3_1_relu, built=True>,
<Conv2D name=conv3_block3_2_conv, built=True>,
<BatchNormalization name=conv3_block3_2_bn, built=True>,
<Activation name=conv3_block3_2_relu, built=True>,
<Conv2D name=conv3_block3_3_conv, built=True>,
<BatchNormalization name=conv3_block3_3_bn, built=True>,
<Add name=conv3_block3_add, built=True>,
<Activation name=conv3_block3_out, built=True>,
<Conv2D name=conv3_block4_1_conv, built=True>,
<BatchNormalization name=conv3_block4_1_bn, built=True>,
<Activation name=conv3_block4_1_relu, built=True>,
<Conv2D name=conv3_block4_2_conv, built=True>,
<BatchNormalization name=conv3_block4_2_bn, built=True>,
<Activation name=conv3_block4_2_relu, built=True>,
<Conv2D name=conv3_block4_3_conv, built=True>,
<BatchNormalization name=conv3_block4_3_bn, built=True>,
<Add name=conv3_block4_add, built=True>,
<Activation name=conv3_block4_out, built=True>,
<Conv2D name=conv4_block1_1_conv, built=True>,
<BatchNormalization name=conv4_block1_1_bn, built=True>,
<Activation name=conv4_block1_1_relu, built=True>,
<Conv2D name=conv4_block1_2_conv, built=True>,
<BatchNormalization name=conv4_block1_2_bn, built=True>,
<Activation name=conv4_block1_2_relu, built=True>,
<Conv2D name=conv4_block1_0_conv, built=True>,
<Conv2D name=conv4_block1_3_conv, built=True>,
<BatchNormalization name=conv4_block1_0_bn, built=True>,
<BatchNormalization name=conv4_block1_3_bn, built=True>,
<Add name=conv4_block1_add, built=True>,
<Activation name=conv4_block1_out, built=True>,
<Conv2D name=conv4_block2_1_conv, built=True>,
<BatchNormalization name=conv4_block2_1_bn, built=True>,
<Activation name=conv4_block2_1_relu, built=True>,
<Conv2D name=conv4_block2_2_conv, built=True>,
<BatchNormalization name=conv4_block2_2_bn, built=True>,
<Activation name=conv4_block2_2_relu, built=True>,
<Conv2D name=conv4_block2_3_conv, built=True>,
<BatchNormalization name=conv4_block2_3_bn, built=True>,
<Add name=conv4_block2_add, built=True>,
<Activation name=conv4_block2_out, built=True>,
<Conv2D name=conv4_block3_1_conv, built=True>,
<BatchNormalization name=conv4_block3_1_bn, built=True>,
<Activation name=conv4_block3_1_relu, built=True>,
<Conv2D name=conv4_block3_2_conv, built=True>,
<BatchNormalization name=conv4_block3_2_bn, built=True>,
<Activation name=conv4_block3_2_relu, built=True>,
<Conv2D name=conv4_block3_3_conv, built=True>,
<BatchNormalization name=conv4_block3_3_bn, built=True>,
<Add name=conv4_block3_add, built=True>,
<Activation name=conv4_block3_out, built=True>,
<Conv2D name=conv4_block4_1_conv, built=True>,
<BatchNormalization name=conv4_block4_1_bn, built=True>,
<Activation name=conv4_block4_1_relu, built=True>,
<Conv2D name=conv4_block4_2_conv, built=True>,
<BatchNormalization name=conv4_block4_2_bn, built=True>,
<Activation name=conv4_block4_2_relu, built=True>,
<Conv2D name=conv4_block4_3_conv, built=True>,
<BatchNormalization name=conv4_block4_3_bn, built=True>,
<Add name=conv4_block4_add, built=True>,
<Activation name=conv4_block4_out, built=True>,
<Conv2D name=conv4_block5_1_conv, built=True>,
<BatchNormalization name=conv4_block5_1_bn, built=True>,
<Activation name=conv4_block5_1_relu, built=True>,
<Conv2D name=conv4_block5_2_conv, built=True>,
<BatchNormalization name=conv4_block5_2_bn, built=True>,
<Activation name=conv4_block5_2_relu, built=True>,
<Conv2D name=conv4_block5_3_conv, built=True>,
<BatchNormalization name=conv4_block5_3_bn, built=True>,
<Add name=conv4_block5_add, built=True>,
<Activation name=conv4_block5_out, built=True>,
<Conv2D name=conv4_block6_1_conv, built=True>,
<BatchNormalization name=conv4_block6_1_bn, built=True>,
<Activation name=conv4_block6_1_relu, built=True>,
<Conv2D name=conv4_block6_2_conv, built=True>,
<BatchNormalization name=conv4_block6_2_bn, built=True>,
<Activation name=conv4_block6_2_relu, built=True>,
<Conv2D name=conv4_block6_3_conv, built=True>,
<BatchNormalization name=conv4_block6_3_bn, built=True>,
<Add name=conv4_block6_add, built=True>,
<Activation name=conv4_block6_out, built=True>,
<Conv2D name=conv5_block1_1_conv, built=True>,
<BatchNormalization name=conv5_block1_1_bn, built=True>,
<Activation name=conv5_block1_1_relu, built=True>,
<Conv2D name=conv5_block1_2_conv, built=True>,
<BatchNormalization name=conv5_block1_2_bn, built=True>,
<Activation name=conv5_block1_2_relu, built=True>,
<Conv2D name=conv5_block1_0_conv, built=True>,
<Conv2D name=conv5_block1_3_conv, built=True>,
<BatchNormalization name=conv5_block1_0_bn, built=True>,
<BatchNormalization name=conv5_block1_3_bn, built=True>,
<Add name=conv5_block1_add, built=True>,
<Activation name=conv5_block1_out, built=True>,
<Conv2D name=conv5_block2_1_conv, built=True>,
<BatchNormalization name=conv5_block2_1_bn, built=True>,
<Activation name=conv5_block2_1_relu, built=True>,
<Conv2D name=conv5_block2_2_conv, built=True>,
<BatchNormalization name=conv5_block2_2_bn, built=True>,
<Activation name=conv5_block2_2_relu, built=True>,
<Conv2D name=conv5_block2_3_conv, built=True>,
<BatchNormalization name=conv5_block2_3_bn, built=True>,
<Add name=conv5_block2_add, built=True>,
<Activation name=conv5_block2_out, built=True>,
<Conv2D name=conv5_block3_1_conv, built=True>,
<BatchNormalization name=conv5_block3_1_bn, built=True>,
<Activation name=conv5_block3_1_relu, built=True>,
<Conv2D name=conv5_block3_2_conv, built=True>,
<BatchNormalization name=conv5_block3_2_bn, built=True>,
<Activation name=conv5_block3_2_relu, built=True>,
<Conv2D name=conv5_block3_3_conv, built=True>,
<BatchNormalization name=conv5_block3_3_bn, built=True>,
<Add name=conv5_block3_add, built=True>,
<Activation name=conv5_block3_out, built=True>,
<GlobalAveragePooling2D name=avg_pool, built=True>,
<Dense name=dense, built=True>]
for layer in new_model.layers[:-1] :
layer.trainable = False
new_model.compile(optimizer='adam', loss=keras.losses.sparse_categorical_crossentropy,
metrics=['accuracy'])
from keras.callbacks import EarlyStopping
es = EarlyStopping(monitor='val_loss',
min_delta=0,
patience=4,
verbose=1,
restore_best_weights=True
)
hist = new_model.fit(train_x, train_y, epochs=100, verbose=1,
validation_split=0.2, callbacks=[es]
)
Epoch 1/100
1250/1250 ━━━━━━━━━━━━━━━━━━━━ 30s 15ms/step - accuracy: 0.4578 - loss: 1.9027 - val_accuracy: 0.5672 - val_loss: 1.3607
Epoch 2/100
1250/1250 ━━━━━━━━━━━━━━━━━━━━ 12s 10ms/step - accuracy: 0.6004 - loss: 1.2240 - val_accuracy: 0.5785 - val_loss: 1.3495
Epoch 3/100
1250/1250 ━━━━━━━━━━━━━━━━━━━━ 21s 10ms/step - accuracy: 0.6231 - loss: 1.1425 - val_accuracy: 0.5877 - val_loss: 1.3794
Epoch 4/100
1250/1250 ━━━━━━━━━━━━━━━━━━━━ 13s 11ms/step - accuracy: 0.6350 - loss: 1.1158 - val_accuracy: 0.5911 - val_loss: 1.3944
Epoch 5/100
1250/1250 ━━━━━━━━━━━━━━━━━━━━ 12s 10ms/step - accuracy: 0.6524 - loss: 1.0700 - val_accuracy: 0.5851 - val_loss: 1.3947
Epoch 6/100
1250/1250 ━━━━━━━━━━━━━━━━━━━━ 17s 14ms/step - accuracy: 0.6566 - loss: 1.0473 - val_accuracy: 0.5879 - val_loss: 1.4358
Epoch 6: early stopping
Restoring model weights from the end of the best epoch: 2.
new_model.evaluate(test_x, test_y)
313/313 ━━━━━━━━━━━━━━━━━━━━ 3s 8ms/step - accuracy: 0.5817 - loss: 1.3523
[1.3387278318405151, 0.585099995136261]
y_pred = new_model.predict(test_x)
313/313 ━━━━━━━━━━━━━━━━━━━━ 9s 19ms/step
y_pred.shape
(10000, 10)
y_pred_arg = np.argmax(y_pred, axis=1)
test_y_arg = np.ravel(test_y)
Visualize Inference
'''
성능 확인을 위해
Ctrl+Enter를 이용하여
반복 실행 해보자!
'''
id = rd.randrange(0,10000)
print(f'id = {id}')
print(f'다음 그림은 {labels[test_y_arg[id]]} 입니다.')
print(f'모델의 예측 : {labels[y_pred_arg[id]]}')
prob = np.floor(y_pred[id]*100).tolist()
prob_dict = {}
for idx, prob in enumerate(prob) :
prob_dict[ labels[idx] ] = prob
print('모델의 카테고리별 확률 : ')
print(prob_dict)
if test_y_arg[id] == y_pred_arg[id] :
print('정답입니다')
else :
print('틀렸어요')
plt.imshow(test_x[id].reshape([32,32,-1]))
plt.show()
'''
틀린 것만 관찰해보자!
Ctrl+Enter를 이용하여
반복 실행 해보자!
'''
true_false = (test_y == y_pred)
f_id = np.where(true_false == False)[0]
f_n = len(f_id)
id = f_id[rd.randrange(0,f_n)]
print(f'id = {id}')
print(f'다음 그림은 {labels[test_y_arg[id]]} 입니다.')
print(f'모델의 예측 : {labels[y_pred_arg[id]]}')
prob = np.floor(y_pred[id]*100).tolist()
prob_dict = {}
for idx, prob in enumerate(prob) :
prob_dict[ labels[idx] ] = prob
print('모델의 카테고리별 확률 : ')
print(prob_dict)
if test_y_arg[id] == y_pred_arg[id] :
print('정답입니다')
else :
print('틀렸어요')
plt.imshow(test_x[id].reshape([32,32,-1]))
plt.show()