当前位置: 首页 > news >正文

深度学习案例:ResNet50模型+SE-Net

本文为为🔗365天深度学习训练营内部文章

原作者:K同学啊

 一 回顾ResNet模型

ResNet,即残差网络,是由微软研究院的Kaiming He及其合作者于2015年提出的一种深度卷积神经网络架构。该网络架构的核心创新在于引入了“残差连接”(residual connections)或“跳跃连接”(skip connections),这一结构的引入使得网络能够有效地训练深度极深的模型。该技术成功克服了传统深度网络在增加层数时所面临的梯度消失(vanishing gradients)或梯度爆炸(exploding gradients)的难题。

1. ResNet的核心思想

残差网络(ResNet)的核心理念在于采用残差学习策略以替代直接学习目标函数的方法。在该框架下,我们旨在学习一个映射函数H(x)。通过引入残差连接,ResNet并非直接对H(x)进行学习,而是转而学习残差函数F(x),即H(x)与输入x之间的差值,从而将学习目标转化为对F(x)的掌握。

该方法显著提升了网络的优化效率,即便是在恒等映射(即 H(x)=x)的情形下,亦可通过学习残差 F(x)=0来实现。残差连接的引入促进了信息与梯度的直接传递,从较浅层至较深层,有效缓解了深层网络训练过程中的困难。

 

2.ResNet的构成

残差网络(ResNet)的核心组件为残差块。该结构单元由一个或多个卷积层组成,其中输入数据通过快捷连接(short-cut connection)绕过卷积层,直接与输出相加。ResNet的典型架构可概述如下:

卷积层:残差块通常由两个或三个卷积层构成,其中3x3卷积核的应用尤为普遍。卷积操作后,通常会应用一个激活函数(如ReLU函数),以实现数据的非线性映射。

快捷连接:输入数据通过快捷连接直接与输出相加,绕过了中间的卷积层。这种设计有助于简化信息在深层网络中的传递路径。

ReLU激活函数:在卷积层之后,通常会施加ReLU激活函数,以增强网络的非线性表达能力。

二 通道注意力机制 SE-Net 

E-Net(Squeeze-and-Excitation Networks),由Hu等人于2018年提出,是一种针对卷积神经网络(CNN)的通道注意力机制。该机制通过引入自适应通道权重调整机制,显著提升了CNN在图像分类等任务中的性能。SE-Net模块的核心理念在于通过“压缩(Squeeze)”与“激励(Excitation)”操作,自动学习并赋予各通道以重要性权重,进而对特征图进行加权处理,使模型能够集中注意力于关键特征,同时抑制不相关特征。

SE-Net模块可嵌入至各类传统卷积神经网络架构中(如ResNet、Inception等),通过引入通道级注意力机制以增强网络性能。SE模块的基本原理是通过“全局信息池化”步骤捕捉全局特征信息,并据此动态调整各通道的特征图权重。SE模块的处理流程主要包括两个阶段:

1)压缩

在压缩过程中,空间特征提取(Spatial Excitation, SE)模块利用全局平均池化(Global Average Pooling, GAP)技术对各个通道的特征图进行聚合,以实现对全局特征的表征。设输入特征图为 X,其高度和宽度分别为 H 和 W,通道数为 C。通过执行全局平均池化,对每个通道的 H×W 特征图进行平均值计算,从而为每个通道提取出一个单一的标量值。

\mathbf{z_{c}}=\frac{1}{\mathrm{H\times W}}\sum_{\mathrm{i=1}}^{\mathrm{H}}\sum_{\mathrm{j=1}}^{\mathrm{W}}\mathrm{x_{ijc}} ,\quad\mathrm{c=1,2,...,C} 

2)激励

激励机制旨在通过全连接层学习各通道的重要性权重。本研究采用全局特征表示 z=[z1,z2,…,zC] 作为输入,通过两个全连接层(FC层)的处理,生成各通道的权重系数 s=[s1,s2,…,sC]。具体操作步骤如下:

首先,第一个全连接层接收输入 z,并通过激活函数(例如ReLU)获得隐层特征。

其次,第二个全连接层利用Sigmoid激活函数输出各通道的权重系数,以确保每个系数Sc介于0到1之间。

最终,通过Sigmoid激活函数处理后得到的通道注意力权重向量 s,可计算出各通道的重要性得分。

s_{\mathrm{c}}= \sigma\left(\mathrm{W}_{2}\cdot\mathrm{ReLU}(\mathrm{W}_{1}\cdot\mathrm{z})\right),\quad\mathrm{c}=1,2,...,\mathrm{C} 

3)重标定

最终,空间注意力(Spatial Enhancement,SE)模块通过应用学习得到的通道权重s对原始特征图的各个通道进行加权,实现特征重标定。设输入特征图为X,经由SE模块处理后,每个通道c的输出Y可表示为:

\mathrm{y_{c}=s_{c}\cdot x_{c},\quad c=1,2,...,C}

 其中,xc是输入特征图中通道 c的特征图,sc 是通道 c 的权重。通过这个重标定步骤,SE模块为每个通道分配一个权重,从而增强了对重要通道的关注,抑制了无关通道的影响。

三 ResNet+SE-Net 性能提升 

from keras import layers
from keras.layers import Input, Activation, BatchNormalization, Flatten, Dropout,Reshape
from keras.layers import Dense, Conv2D, MaxPooling2D, ZeroPadding2D, AveragePooling2D, GlobalAveragePooling2D
from keras.models import Model
import tensorflow as tf
from keras.layers import Add, UpSampling2D, Conv2D
from keras.layers import Multiply, Concatenatedef squeeze_excite_block(input_tensor, ratio=16):'''Squeeze-and-Excitation Block:param input_tensor: 输入张量:param ratio: 压缩比,控制激励层中间层的维度。通常选择较小的值,如16。:return: 加权后的张量'''channel_axis = -1  # 通道轴通常在最后一维channels = input_tensor.shape[channel_axis]  # 获取通道数# Squeeze:全局平均池化x = GlobalAveragePooling2D()(input_tensor)x = Reshape((1, 1, channels))(x)# Excite:两个全连接层生成通道权重x = Dense(channels // ratio, activation='relu', kernel_initializer='he_normal', use_bias=False)(x)x = Dense(channels, activation='sigmoid', kernel_initializer='he_normal', use_bias=False)(x)# 将生成的权重与输入张量相乘x = Multiply()([input_tensor, x])return x
def identity_block(input_tensor, kernel_size, filters, stage, block):filters1, filters2, filters3 = filtersname_base = str(stage) + block + '_identity_block_'# 第一卷积层x = Conv2D(filters1, (1, 1), name=name_base + 'conv1')(input_tensor)x = BatchNormalization(name=name_base + 'bn1')(x)x = Activation('relu', name=name_base + 'relu1')(x)# 第二卷积层x = Conv2D(filters2, kernel_size, padding='same', name=name_base + 'conv2')(x)x = BatchNormalization(name=name_base + 'bn2')(x)x = Activation('relu', name=name_base + 'relu2')(x)# 第三卷积层x = Conv2D(filters3, (1, 1), name=name_base + 'conv3')(x)x = BatchNormalization(name=name_base + 'bn3')(x)# SE-Net通道注意力机制x = squeeze_excite_block(x)# 残差连接x = layers.add([x, input_tensor], name=name_base + 'add')x = Activation('relu', name=name_base + 'relu4')(x)return xdef conv_block(input_tensor, kernel_size, filters, stage, block, strides=(2, 2)):filters1, filters2, filters3 = filtersres_name_base = str(stage) + block + '_conv_block_res_'name_base = str(stage) + block + '_conv_block_'# 主卷积层x = Conv2D(filters1, (1, 1), strides=strides, name=name_base + 'conv1')(input_tensor)x = BatchNormalization(name=name_base + 'bn1')(x)x = Activation('relu', name=name_base + 'relu1')(x)x = Conv2D(filters2, kernel_size, padding='same', name=name_base + 'conv2')(x)x = BatchNormalization(name=name_base + 'bn2')(x)x = Activation('relu', name=name_base + 'relu2')(x)x = Conv2D(filters3, (1, 1), name=name_base + 'conv3')(x)x = BatchNormalization(name=name_base + 'bn3')(x)# 残差连接的卷积shortcut = Conv2D(filters3, (1, 1), strides=strides, name=res_name_base + 'conv')(input_tensor)shortcut = BatchNormalization(name=res_name_base + 'bn')(shortcut)# SE-Net通道注意力机制x = squeeze_excite_block(x)# 残差连接加和x = layers.add([x, shortcut], name=name_base + 'add')x = Activation('relu', name=name_base + 'relu4')(x)return x
def ResNet50(input_shape=[224,224,3], classes=4):img_input = Input(shape=input_shape)x = ZeroPadding2D((3, 3))(img_input)x = Conv2D(64, (7, 7), strides=(2, 2), name='conv1')(x)x = BatchNormalization(name='bn_conv1')(x)x = Activation('relu')(x)x = MaxPooling2D((3, 3), strides=(2, 2))(x)x = conv_block(x, 3, [64, 64, 256], stage=2, block='a', strides=(1, 1))x = identity_block(x, 3, [64, 64, 256], stage=2, block='b')x = identity_block(x, 3, [64, 64, 256], stage=2, block='c')x = conv_block(x, 3, [128, 128, 512], stage=3, block='a')x = identity_block(x, 3, [128, 128, 512], stage=3, block='b')x = identity_block(x, 3, [128, 128, 512], stage=3, block='c')x = identity_block(x, 3, [128, 128, 512], stage=3, block='d')x = conv_block(x, 3, [256, 256, 1024], stage=4, block='a')x = identity_block(x, 3, [256, 256, 1024], stage=4, block='b')x = identity_block(x, 3, [256, 256, 1024], stage=4, block='c')x = identity_block(x, 3, [256, 256, 1024], stage=4, block='d')x = identity_block(x, 3, [256, 256, 1024], stage=4, block='e')x = identity_block(x, 3, [256, 256, 1024], stage=4, block='f')x = conv_block(x, 3, [512, 512, 2048], stage=5, block='a')x = identity_block(x, 3, [512, 512, 2048], stage=5, block='b')x = identity_block(x, 3, [512, 512, 2048], stage=5, block='c')x = AveragePooling2D((7, 7), name='avg_pool')(x)x = Flatten()(x)x = Dropout(0.5)(x)x = Dense(classes, activation='softmax', name='fc2')(x)model = Model(img_input, x, name='resnet50')return modelmodel = ResNet50()
model.summary()
Model: "resnet50"
__________________________________________________________________________________________________Layer (type)                   Output Shape         Param #     Connected to                     
==================================================================================================input_1 (InputLayer)           [(None, 224, 224, 3  0           []                               )]                                                                zero_padding2d (ZeroPadding2D)  (None, 230, 230, 3)  0          ['input_1[0][0]']                conv1 (Conv2D)                 (None, 112, 112, 64  9472        ['zero_padding2d[0][0]']         )                                                                 bn_conv1 (BatchNormalization)  (None, 112, 112, 64  256         ['conv1[0][0]']                  )                                                                 activation (Activation)        (None, 112, 112, 64  0           ['bn_conv1[0][0]']               )                                                                 max_pooling2d (MaxPooling2D)   (None, 55, 55, 64)   0           ['activation[0][0]']             2a_conv_block_conv1 (Conv2D)   (None, 55, 55, 64)   4160        ['max_pooling2d[0][0]']          2a_conv_block_bn1 (BatchNormal  (None, 55, 55, 64)  256         ['2a_conv_block_conv1[0][0]']    ization)                                                                                         2a_conv_block_relu1 (Activatio  (None, 55, 55, 64)  0           ['2a_conv_block_bn1[0][0]']      n)                                                                                               2a_conv_block_conv2 (Conv2D)   (None, 55, 55, 64)   36928       ['2a_conv_block_relu1[0][0]']    2a_conv_block_bn2 (BatchNormal  (None, 55, 55, 64)  256         ['2a_conv_block_conv2[0][0]']    ization)                                                                                         2a_conv_block_relu2 (Activatio  (None, 55, 55, 64)  0           ['2a_conv_block_bn2[0][0]']      n)                                                                                               2a_conv_block_conv3 (Conv2D)   (None, 55, 55, 256)  16640       ['2a_conv_block_relu2[0][0]']    2a_conv_block_bn3 (BatchNormal  (None, 55, 55, 256)  1024       ['2a_conv_block_conv3[0][0]']    ization)                                                                                         global_average_pooling2d (Glob  (None, 256)         0           ['2a_conv_block_bn3[0][0]']      alAveragePooling2D)                                                                              reshape (Reshape)              (None, 1, 1, 256)    0           ['global_average_pooling2d[0][0]']                                dense (Dense)                  (None, 1, 1, 16)     4096        ['reshape[0][0]']                dense_1 (Dense)                (None, 1, 1, 256)    4096        ['dense[0][0]']                  2a_conv_block_res_conv (Conv2D  (None, 55, 55, 256)  16640      ['max_pooling2d[0][0]']          )                                                                                                multiply (Multiply)            (None, 55, 55, 256)  0           ['2a_conv_block_bn3[0][0]',      'dense_1[0][0]']                2a_conv_block_res_bn (BatchNor  (None, 55, 55, 256)  1024       ['2a_conv_block_res_conv[0][0]'] malization)                                                                                      2a_conv_block_add (Add)        (None, 55, 55, 256)  0           ['multiply[0][0]',               '2a_conv_block_res_bn[0][0]']   2a_conv_block_relu4 (Activatio  (None, 55, 55, 256)  0          ['2a_conv_block_add[0][0]']      n)                                                                                               2b_identity_block_conv1 (Conv2  (None, 55, 55, 64)  16448       ['2a_conv_block_relu4[0][0]']    D)                                                                                               2b_identity_block_bn1 (BatchNo  (None, 55, 55, 64)  256         ['2b_identity_block_conv1[0][0]']rmalization)                                                                                     2b_identity_block_relu1 (Activ  (None, 55, 55, 64)  0           ['2b_identity_block_bn1[0][0]']  ation)                                                                                           2b_identity_block_conv2 (Conv2  (None, 55, 55, 64)  36928       ['2b_identity_block_relu1[0][0]']D)                                                                                               2b_identity_block_bn2 (BatchNo  (None, 55, 55, 64)  256         ['2b_identity_block_conv2[0][0]']rmalization)                                                                                     2b_identity_block_relu2 (Activ  (None, 55, 55, 64)  0           ['2b_identity_block_bn2[0][0]']  ation)                                                                                           2b_identity_block_conv3 (Conv2  (None, 55, 55, 256)  16640      ['2b_identity_block_relu2[0][0]']D)                                                                                               2b_identity_block_bn3 (BatchNo  (None, 55, 55, 256)  1024       ['2b_identity_block_conv3[0][0]']rmalization)                                                                                     global_average_pooling2d_1 (Gl  (None, 256)         0           ['2b_identity_block_bn3[0][0]']  obalAveragePooling2D)                                                                            reshape_1 (Reshape)            (None, 1, 1, 256)    0           ['global_average_pooling2d_1[0][0]']                              dense_2 (Dense)                (None, 1, 1, 16)     4096        ['reshape_1[0][0]']              dense_3 (Dense)                (None, 1, 1, 256)    4096        ['dense_2[0][0]']                multiply_1 (Multiply)          (None, 55, 55, 256)  0           ['2b_identity_block_bn3[0][0]',  'dense_3[0][0]']                2b_identity_block_add (Add)    (None, 55, 55, 256)  0           ['multiply_1[0][0]',             '2a_conv_block_relu4[0][0]']    2b_identity_block_relu4 (Activ  (None, 55, 55, 256)  0          ['2b_identity_block_add[0][0]']  ation)                                                                                           2c_identity_block_conv1 (Conv2  (None, 55, 55, 64)  16448       ['2b_identity_block_relu4[0][0]']D)                                                                                               2c_identity_block_bn1 (BatchNo  (None, 55, 55, 64)  256         ['2c_identity_block_conv1[0][0]']rmalization)                                                                                     2c_identity_block_relu1 (Activ  (None, 55, 55, 64)  0           ['2c_identity_block_bn1[0][0]']  ation)                                                                                           2c_identity_block_conv2 (Conv2  (None, 55, 55, 64)  36928       ['2c_identity_block_relu1[0][0]']D)                                                                                               2c_identity_block_bn2 (BatchNo  (None, 55, 55, 64)  256         ['2c_identity_block_conv2[0][0]']rmalization)                                                                                     2c_identity_block_relu2 (Activ  (None, 55, 55, 64)  0           ['2c_identity_block_bn2[0][0]']  ation)                                                                                           2c_identity_block_conv3 (Conv2  (None, 55, 55, 256)  16640      ['2c_identity_block_relu2[0][0]']D)                                                                                               2c_identity_block_bn3 (BatchNo  (None, 55, 55, 256)  1024       ['2c_identity_block_conv3[0][0]']rmalization)                                                                                     global_average_pooling2d_2 (Gl  (None, 256)         0           ['2c_identity_block_bn3[0][0]']  obalAveragePooling2D)                                                                            reshape_2 (Reshape)            (None, 1, 1, 256)    0           ['global_average_pooling2d_2[0][0]']                              dense_4 (Dense)                (None, 1, 1, 16)     4096        ['reshape_2[0][0]']              dense_5 (Dense)                (None, 1, 1, 256)    4096        ['dense_4[0][0]']                multiply_2 (Multiply)          (None, 55, 55, 256)  0           ['2c_identity_block_bn3[0][0]',  'dense_5[0][0]']                2c_identity_block_add (Add)    (None, 55, 55, 256)  0           ['multiply_2[0][0]',             '2b_identity_block_relu4[0][0]']2c_identity_block_relu4 (Activ  (None, 55, 55, 256)  0          ['2c_identity_block_add[0][0]']  ation)                                                                                           3a_conv_block_conv1 (Conv2D)   (None, 28, 28, 128)  32896       ['2c_identity_block_relu4[0][0]']3a_conv_block_bn1 (BatchNormal  (None, 28, 28, 128)  512        ['3a_conv_block_conv1[0][0]']    ization)                                                                                         3a_conv_block_relu1 (Activatio  (None, 28, 28, 128)  0          ['3a_conv_block_bn1[0][0]']      n)                                                                                               3a_conv_block_conv2 (Conv2D)   (None, 28, 28, 128)  147584      ['3a_conv_block_relu1[0][0]']    3a_conv_block_bn2 (BatchNormal  (None, 28, 28, 128)  512        ['3a_conv_block_conv2[0][0]']    ization)                                                                                         3a_conv_block_relu2 (Activatio  (None, 28, 28, 128)  0          ['3a_conv_block_bn2[0][0]']      n)                                                                                               3a_conv_block_conv3 (Conv2D)   (None, 28, 28, 512)  66048       ['3a_conv_block_relu2[0][0]']    3a_conv_block_bn3 (BatchNormal  (None, 28, 28, 512)  2048       ['3a_conv_block_conv3[0][0]']    ization)                                                                                         global_average_pooling2d_3 (Gl  (None, 512)         0           ['3a_conv_block_bn3[0][0]']      obalAveragePooling2D)                                                                            reshape_3 (Reshape)            (None, 1, 1, 512)    0           ['global_average_pooling2d_3[0][0]']                              dense_6 (Dense)                (None, 1, 1, 32)     16384       ['reshape_3[0][0]']              dense_7 (Dense)                (None, 1, 1, 512)    16384       ['dense_6[0][0]']                3a_conv_block_res_conv (Conv2D  (None, 28, 28, 512)  131584     ['2c_identity_block_relu4[0][0]'])                                                                                                multiply_3 (Multiply)          (None, 28, 28, 512)  0           ['3a_conv_block_bn3[0][0]',      'dense_7[0][0]']                3a_conv_block_res_bn (BatchNor  (None, 28, 28, 512)  2048       ['3a_conv_block_res_conv[0][0]'] malization)                                                                                      3a_conv_block_add (Add)        (None, 28, 28, 512)  0           ['multiply_3[0][0]',             '3a_conv_block_res_bn[0][0]']   3a_conv_block_relu4 (Activatio  (None, 28, 28, 512)  0          ['3a_conv_block_add[0][0]']      n)                                                                                               3b_identity_block_conv1 (Conv2  (None, 28, 28, 128)  65664      ['3a_conv_block_relu4[0][0]']    D)                                                                                               3b_identity_block_bn1 (BatchNo  (None, 28, 28, 128)  512        ['3b_identity_block_conv1[0][0]']rmalization)                                                                                     3b_identity_block_relu1 (Activ  (None, 28, 28, 128)  0          ['3b_identity_block_bn1[0][0]']  ation)                                                                                           3b_identity_block_conv2 (Conv2  (None, 28, 28, 128)  147584     ['3b_identity_block_relu1[0][0]']D)                                                                                               3b_identity_block_bn2 (BatchNo  (None, 28, 28, 128)  512        ['3b_identity_block_conv2[0][0]']rmalization)                                                                                     3b_identity_block_relu2 (Activ  (None, 28, 28, 128)  0          ['3b_identity_block_bn2[0][0]']  ation)                                                                                           3b_identity_block_conv3 (Conv2  (None, 28, 28, 512)  66048      ['3b_identity_block_relu2[0][0]']D)                                                                                               3b_identity_block_bn3 (BatchNo  (None, 28, 28, 512)  2048       ['3b_identity_block_conv3[0][0]']rmalization)                                                                                     global_average_pooling2d_4 (Gl  (None, 512)         0           ['3b_identity_block_bn3[0][0]']  obalAveragePooling2D)                                                                            reshape_4 (Reshape)            (None, 1, 1, 512)    0           ['global_average_pooling2d_4[0][0]']                              dense_8 (Dense)                (None, 1, 1, 32)     16384       ['reshape_4[0][0]']              dense_9 (Dense)                (None, 1, 1, 512)    16384       ['dense_8[0][0]']                multiply_4 (Multiply)          (None, 28, 28, 512)  0           ['3b_identity_block_bn3[0][0]',  'dense_9[0][0]']                3b_identity_block_add (Add)    (None, 28, 28, 512)  0           ['multiply_4[0][0]',             '3a_conv_block_relu4[0][0]']    3b_identity_block_relu4 (Activ  (None, 28, 28, 512)  0          ['3b_identity_block_add[0][0]']  ation)                                                                                           3c_identity_block_conv1 (Conv2  (None, 28, 28, 128)  65664      ['3b_identity_block_relu4[0][0]']D)                                                                                               3c_identity_block_bn1 (BatchNo  (None, 28, 28, 128)  512        ['3c_identity_block_conv1[0][0]']rmalization)                                                                                     3c_identity_block_relu1 (Activ  (None, 28, 28, 128)  0          ['3c_identity_block_bn1[0][0]']  ation)                                                                                           3c_identity_block_conv2 (Conv2  (None, 28, 28, 128)  147584     ['3c_identity_block_relu1[0][0]']D)                                                                                               3c_identity_block_bn2 (BatchNo  (None, 28, 28, 128)  512        ['3c_identity_block_conv2[0][0]']rmalization)                                                                                     3c_identity_block_relu2 (Activ  (None, 28, 28, 128)  0          ['3c_identity_block_bn2[0][0]']  ation)                                                                                           3c_identity_block_conv3 (Conv2  (None, 28, 28, 512)  66048      ['3c_identity_block_relu2[0][0]']D)                                                                                               3c_identity_block_bn3 (BatchNo  (None, 28, 28, 512)  2048       ['3c_identity_block_conv3[0][0]']rmalization)                                                                                     global_average_pooling2d_5 (Gl  (None, 512)         0           ['3c_identity_block_bn3[0][0]']  obalAveragePooling2D)                                                                            reshape_5 (Reshape)            (None, 1, 1, 512)    0           ['global_average_pooling2d_5[0][0]']                              dense_10 (Dense)               (None, 1, 1, 32)     16384       ['reshape_5[0][0]']              dense_11 (Dense)               (None, 1, 1, 512)    16384       ['dense_10[0][0]']               multiply_5 (Multiply)          (None, 28, 28, 512)  0           ['3c_identity_block_bn3[0][0]',  'dense_11[0][0]']               3c_identity_block_add (Add)    (None, 28, 28, 512)  0           ['multiply_5[0][0]',             '3b_identity_block_relu4[0][0]']3c_identity_block_relu4 (Activ  (None, 28, 28, 512)  0          ['3c_identity_block_add[0][0]']  ation)                                                                                           3d_identity_block_conv1 (Conv2  (None, 28, 28, 128)  65664      ['3c_identity_block_relu4[0][0]']D)                                                                                               3d_identity_block_bn1 (BatchNo  (None, 28, 28, 128)  512        ['3d_identity_block_conv1[0][0]']rmalization)                                                                                     3d_identity_block_relu1 (Activ  (None, 28, 28, 128)  0          ['3d_identity_block_bn1[0][0]']  ation)                                                                                           3d_identity_block_conv2 (Conv2  (None, 28, 28, 128)  147584     ['3d_identity_block_relu1[0][0]']D)                                                                                               3d_identity_block_bn2 (BatchNo  (None, 28, 28, 128)  512        ['3d_identity_block_conv2[0][0]']rmalization)                                                                                     3d_identity_block_relu2 (Activ  (None, 28, 28, 128)  0          ['3d_identity_block_bn2[0][0]']  ation)                                                                                           3d_identity_block_conv3 (Conv2  (None, 28, 28, 512)  66048      ['3d_identity_block_relu2[0][0]']D)                                                                                               3d_identity_block_bn3 (BatchNo  (None, 28, 28, 512)  2048       ['3d_identity_block_conv3[0][0]']rmalization)                                                                                     global_average_pooling2d_6 (Gl  (None, 512)         0           ['3d_identity_block_bn3[0][0]']  obalAveragePooling2D)                                                                            reshape_6 (Reshape)            (None, 1, 1, 512)    0           ['global_average_pooling2d_6[0][0]']                              dense_12 (Dense)               (None, 1, 1, 32)     16384       ['reshape_6[0][0]']              dense_13 (Dense)               (None, 1, 1, 512)    16384       ['dense_12[0][0]']               multiply_6 (Multiply)          (None, 28, 28, 512)  0           ['3d_identity_block_bn3[0][0]',  'dense_13[0][0]']               3d_identity_block_add (Add)    (None, 28, 28, 512)  0           ['multiply_6[0][0]',             '3c_identity_block_relu4[0][0]']3d_identity_block_relu4 (Activ  (None, 28, 28, 512)  0          ['3d_identity_block_add[0][0]']  ation)                                                                                           4a_conv_block_conv1 (Conv2D)   (None, 14, 14, 256)  131328      ['3d_identity_block_relu4[0][0]']4a_conv_block_bn1 (BatchNormal  (None, 14, 14, 256)  1024       ['4a_conv_block_conv1[0][0]']    ization)                                                                                         4a_conv_block_relu1 (Activatio  (None, 14, 14, 256)  0          ['4a_conv_block_bn1[0][0]']      n)                                                                                               4a_conv_block_conv2 (Conv2D)   (None, 14, 14, 256)  590080      ['4a_conv_block_relu1[0][0]']    4a_conv_block_bn2 (BatchNormal  (None, 14, 14, 256)  1024       ['4a_conv_block_conv2[0][0]']    ization)                                                                                         4a_conv_block_relu2 (Activatio  (None, 14, 14, 256)  0          ['4a_conv_block_bn2[0][0]']      n)                                                                                               4a_conv_block_conv3 (Conv2D)   (None, 14, 14, 1024  263168      ['4a_conv_block_relu2[0][0]']    )                                                                 4a_conv_block_bn3 (BatchNormal  (None, 14, 14, 1024  4096       ['4a_conv_block_conv3[0][0]']    ization)                       )                                                                 global_average_pooling2d_7 (Gl  (None, 1024)        0           ['4a_conv_block_bn3[0][0]']      obalAveragePooling2D)                                                                            reshape_7 (Reshape)            (None, 1, 1, 1024)   0           ['global_average_pooling2d_7[0][0]']                              dense_14 (Dense)               (None, 1, 1, 64)     65536       ['reshape_7[0][0]']              dense_15 (Dense)               (None, 1, 1, 1024)   65536       ['dense_14[0][0]']               4a_conv_block_res_conv (Conv2D  (None, 14, 14, 1024  525312     ['3d_identity_block_relu4[0][0]'])                              )                                                                 multiply_7 (Multiply)          (None, 14, 14, 1024  0           ['4a_conv_block_bn3[0][0]',      )                                 'dense_15[0][0]']               4a_conv_block_res_bn (BatchNor  (None, 14, 14, 1024  4096       ['4a_conv_block_res_conv[0][0]'] malization)                    )                                                                 4a_conv_block_add (Add)        (None, 14, 14, 1024  0           ['multiply_7[0][0]',             )                                 '4a_conv_block_res_bn[0][0]']   4a_conv_block_relu4 (Activatio  (None, 14, 14, 1024  0          ['4a_conv_block_add[0][0]']      n)                             )                                                                 4b_identity_block_conv1 (Conv2  (None, 14, 14, 256)  262400     ['4a_conv_block_relu4[0][0]']    D)                                                                                               4b_identity_block_bn1 (BatchNo  (None, 14, 14, 256)  1024       ['4b_identity_block_conv1[0][0]']rmalization)                                                                                     4b_identity_block_relu1 (Activ  (None, 14, 14, 256)  0          ['4b_identity_block_bn1[0][0]']  ation)                                                                                           4b_identity_block_conv2 (Conv2  (None, 14, 14, 256)  590080     ['4b_identity_block_relu1[0][0]']D)                                                                                               4b_identity_block_bn2 (BatchNo  (None, 14, 14, 256)  1024       ['4b_identity_block_conv2[0][0]']rmalization)                                                                                     4b_identity_block_relu2 (Activ  (None, 14, 14, 256)  0          ['4b_identity_block_bn2[0][0]']  ation)                                                                                           4b_identity_block_conv3 (Conv2  (None, 14, 14, 1024  263168     ['4b_identity_block_relu2[0][0]']D)                             )                                                                 4b_identity_block_bn3 (BatchNo  (None, 14, 14, 1024  4096       ['4b_identity_block_conv3[0][0]']rmalization)                   )                                                                 global_average_pooling2d_8 (Gl  (None, 1024)        0           ['4b_identity_block_bn3[0][0]']  obalAveragePooling2D)                                                                            reshape_8 (Reshape)            (None, 1, 1, 1024)   0           ['global_average_pooling2d_8[0][0]']                              dense_16 (Dense)               (None, 1, 1, 64)     65536       ['reshape_8[0][0]']              dense_17 (Dense)               (None, 1, 1, 1024)   65536       ['dense_16[0][0]']               multiply_8 (Multiply)          (None, 14, 14, 1024  0           ['4b_identity_block_bn3[0][0]',  )                                 'dense_17[0][0]']               4b_identity_block_add (Add)    (None, 14, 14, 1024  0           ['multiply_8[0][0]',             )                                 '4a_conv_block_relu4[0][0]']    4b_identity_block_relu4 (Activ  (None, 14, 14, 1024  0          ['4b_identity_block_add[0][0]']  ation)                         )                                                                 4c_identity_block_conv1 (Conv2  (None, 14, 14, 256)  262400     ['4b_identity_block_relu4[0][0]']D)                                                                                               4c_identity_block_bn1 (BatchNo  (None, 14, 14, 256)  1024       ['4c_identity_block_conv1[0][0]']rmalization)                                                                                     4c_identity_block_relu1 (Activ  (None, 14, 14, 256)  0          ['4c_identity_block_bn1[0][0]']  ation)                                                                                           4c_identity_block_conv2 (Conv2  (None, 14, 14, 256)  590080     ['4c_identity_block_relu1[0][0]']D)                                                                                               4c_identity_block_bn2 (BatchNo  (None, 14, 14, 256)  1024       ['4c_identity_block_conv2[0][0]']rmalization)                                                                                     4c_identity_block_relu2 (Activ  (None, 14, 14, 256)  0          ['4c_identity_block_bn2[0][0]']  ation)                                                                                           4c_identity_block_conv3 (Conv2  (None, 14, 14, 1024  263168     ['4c_identity_block_relu2[0][0]']D)                             )                                                                 4c_identity_block_bn3 (BatchNo  (None, 14, 14, 1024  4096       ['4c_identity_block_conv3[0][0]']rmalization)                   )                                                                 global_average_pooling2d_9 (Gl  (None, 1024)        0           ['4c_identity_block_bn3[0][0]']  obalAveragePooling2D)                                                                            reshape_9 (Reshape)            (None, 1, 1, 1024)   0           ['global_average_pooling2d_9[0][0]']                              dense_18 (Dense)               (None, 1, 1, 64)     65536       ['reshape_9[0][0]']              dense_19 (Dense)               (None, 1, 1, 1024)   65536       ['dense_18[0][0]']               multiply_9 (Multiply)          (None, 14, 14, 1024  0           ['4c_identity_block_bn3[0][0]',  )                                 'dense_19[0][0]']               4c_identity_block_add (Add)    (None, 14, 14, 1024  0           ['multiply_9[0][0]',             )                                 '4b_identity_block_relu4[0][0]']4c_identity_block_relu4 (Activ  (None, 14, 14, 1024  0          ['4c_identity_block_add[0][0]']  ation)                         )                                                                 4d_identity_block_conv1 (Conv2  (None, 14, 14, 256)  262400     ['4c_identity_block_relu4[0][0]']D)                                                                                               4d_identity_block_bn1 (BatchNo  (None, 14, 14, 256)  1024       ['4d_identity_block_conv1[0][0]']rmalization)                                                                                     4d_identity_block_relu1 (Activ  (None, 14, 14, 256)  0          ['4d_identity_block_bn1[0][0]']  ation)                                                                                           4d_identity_block_conv2 (Conv2  (None, 14, 14, 256)  590080     ['4d_identity_block_relu1[0][0]']D)                                                                                               4d_identity_block_bn2 (BatchNo  (None, 14, 14, 256)  1024       ['4d_identity_block_conv2[0][0]']rmalization)                                                                                     4d_identity_block_relu2 (Activ  (None, 14, 14, 256)  0          ['4d_identity_block_bn2[0][0]']  ation)                                                                                           4d_identity_block_conv3 (Conv2  (None, 14, 14, 1024  263168     ['4d_identity_block_relu2[0][0]']D)                             )                                                                 4d_identity_block_bn3 (BatchNo  (None, 14, 14, 1024  4096       ['4d_identity_block_conv3[0][0]']rmalization)                   )                                                                 global_average_pooling2d_10 (G  (None, 1024)        0           ['4d_identity_block_bn3[0][0]']  lobalAveragePooling2D)                                                                           reshape_10 (Reshape)           (None, 1, 1, 1024)   0           ['global_average_pooling2d_10[0][0]']                             dense_20 (Dense)               (None, 1, 1, 64)     65536       ['reshape_10[0][0]']             dense_21 (Dense)               (None, 1, 1, 1024)   65536       ['dense_20[0][0]']               multiply_10 (Multiply)         (None, 14, 14, 1024  0           ['4d_identity_block_bn3[0][0]',  )                                 'dense_21[0][0]']               4d_identity_block_add (Add)    (None, 14, 14, 1024  0           ['multiply_10[0][0]',            )                                 '4c_identity_block_relu4[0][0]']4d_identity_block_relu4 (Activ  (None, 14, 14, 1024  0          ['4d_identity_block_add[0][0]']  ation)                         )                                                                 4e_identity_block_conv1 (Conv2  (None, 14, 14, 256)  262400     ['4d_identity_block_relu4[0][0]']D)                                                                                               4e_identity_block_bn1 (BatchNo  (None, 14, 14, 256)  1024       ['4e_identity_block_conv1[0][0]']rmalization)                                                                                     4e_identity_block_relu1 (Activ  (None, 14, 14, 256)  0          ['4e_identity_block_bn1[0][0]']  ation)                                                                                           4e_identity_block_conv2 (Conv2  (None, 14, 14, 256)  590080     ['4e_identity_block_relu1[0][0]']D)                                                                                               4e_identity_block_bn2 (BatchNo  (None, 14, 14, 256)  1024       ['4e_identity_block_conv2[0][0]']rmalization)                                                                                     4e_identity_block_relu2 (Activ  (None, 14, 14, 256)  0          ['4e_identity_block_bn2[0][0]']  ation)                                                                                           4e_identity_block_conv3 (Conv2  (None, 14, 14, 1024  263168     ['4e_identity_block_relu2[0][0]']D)                             )                                                                 4e_identity_block_bn3 (BatchNo  (None, 14, 14, 1024  4096       ['4e_identity_block_conv3[0][0]']rmalization)                   )                                                                 global_average_pooling2d_11 (G  (None, 1024)        0           ['4e_identity_block_bn3[0][0]']  lobalAveragePooling2D)                                                                           reshape_11 (Reshape)           (None, 1, 1, 1024)   0           ['global_average_pooling2d_11[0][0]']                             dense_22 (Dense)               (None, 1, 1, 64)     65536       ['reshape_11[0][0]']             dense_23 (Dense)               (None, 1, 1, 1024)   65536       ['dense_22[0][0]']               multiply_11 (Multiply)         (None, 14, 14, 1024  0           ['4e_identity_block_bn3[0][0]',  )                                 'dense_23[0][0]']               4e_identity_block_add (Add)    (None, 14, 14, 1024  0           ['multiply_11[0][0]',            )                                 '4d_identity_block_relu4[0][0]']4e_identity_block_relu4 (Activ  (None, 14, 14, 1024  0          ['4e_identity_block_add[0][0]']  ation)                         )                                                                 4f_identity_block_conv1 (Conv2  (None, 14, 14, 256)  262400     ['4e_identity_block_relu4[0][0]']D)                                                                                               4f_identity_block_bn1 (BatchNo  (None, 14, 14, 256)  1024       ['4f_identity_block_conv1[0][0]']rmalization)                                                                                     4f_identity_block_relu1 (Activ  (None, 14, 14, 256)  0          ['4f_identity_block_bn1[0][0]']  ation)                                                                                           4f_identity_block_conv2 (Conv2  (None, 14, 14, 256)  590080     ['4f_identity_block_relu1[0][0]']D)                                                                                               4f_identity_block_bn2 (BatchNo  (None, 14, 14, 256)  1024       ['4f_identity_block_conv2[0][0]']rmalization)                                                                                     4f_identity_block_relu2 (Activ  (None, 14, 14, 256)  0          ['4f_identity_block_bn2[0][0]']  ation)                                                                                           4f_identity_block_conv3 (Conv2  (None, 14, 14, 1024  263168     ['4f_identity_block_relu2[0][0]']D)                             )                                                                 4f_identity_block_bn3 (BatchNo  (None, 14, 14, 1024  4096       ['4f_identity_block_conv3[0][0]']rmalization)                   )                                                                 global_average_pooling2d_12 (G  (None, 1024)        0           ['4f_identity_block_bn3[0][0]']  lobalAveragePooling2D)                                                                           reshape_12 (Reshape)           (None, 1, 1, 1024)   0           ['global_average_pooling2d_12[0][0]']                             dense_24 (Dense)               (None, 1, 1, 64)     65536       ['reshape_12[0][0]']             dense_25 (Dense)               (None, 1, 1, 1024)   65536       ['dense_24[0][0]']               multiply_12 (Multiply)         (None, 14, 14, 1024  0           ['4f_identity_block_bn3[0][0]',  )                                 'dense_25[0][0]']               4f_identity_block_add (Add)    (None, 14, 14, 1024  0           ['multiply_12[0][0]',            )                                 '4e_identity_block_relu4[0][0]']4f_identity_block_relu4 (Activ  (None, 14, 14, 1024  0          ['4f_identity_block_add[0][0]']  ation)                         )                                                                 5a_conv_block_conv1 (Conv2D)   (None, 7, 7, 512)    524800      ['4f_identity_block_relu4[0][0]']5a_conv_block_bn1 (BatchNormal  (None, 7, 7, 512)   2048        ['5a_conv_block_conv1[0][0]']    ization)                                                                                         5a_conv_block_relu1 (Activatio  (None, 7, 7, 512)   0           ['5a_conv_block_bn1[0][0]']      n)                                                                                               5a_conv_block_conv2 (Conv2D)   (None, 7, 7, 512)    2359808     ['5a_conv_block_relu1[0][0]']    5a_conv_block_bn2 (BatchNormal  (None, 7, 7, 512)   2048        ['5a_conv_block_conv2[0][0]']    ization)                                                                                         5a_conv_block_relu2 (Activatio  (None, 7, 7, 512)   0           ['5a_conv_block_bn2[0][0]']      n)                                                                                               5a_conv_block_conv3 (Conv2D)   (None, 7, 7, 2048)   1050624     ['5a_conv_block_relu2[0][0]']    5a_conv_block_bn3 (BatchNormal  (None, 7, 7, 2048)  8192        ['5a_conv_block_conv3[0][0]']    ization)                                                                                         global_average_pooling2d_13 (G  (None, 2048)        0           ['5a_conv_block_bn3[0][0]']      lobalAveragePooling2D)                                                                           reshape_13 (Reshape)           (None, 1, 1, 2048)   0           ['global_average_pooling2d_13[0][0]']                             dense_26 (Dense)               (None, 1, 1, 128)    262144      ['reshape_13[0][0]']             dense_27 (Dense)               (None, 1, 1, 2048)   262144      ['dense_26[0][0]']               5a_conv_block_res_conv (Conv2D  (None, 7, 7, 2048)  2099200     ['4f_identity_block_relu4[0][0]'])                                                                                                multiply_13 (Multiply)         (None, 7, 7, 2048)   0           ['5a_conv_block_bn3[0][0]',      'dense_27[0][0]']               5a_conv_block_res_bn (BatchNor  (None, 7, 7, 2048)  8192        ['5a_conv_block_res_conv[0][0]'] malization)                                                                                      5a_conv_block_add (Add)        (None, 7, 7, 2048)   0           ['multiply_13[0][0]',            '5a_conv_block_res_bn[0][0]']   5a_conv_block_relu4 (Activatio  (None, 7, 7, 2048)  0           ['5a_conv_block_add[0][0]']      n)                                                                                               5b_identity_block_conv1 (Conv2  (None, 7, 7, 512)   1049088     ['5a_conv_block_relu4[0][0]']    D)                                                                                               5b_identity_block_bn1 (BatchNo  (None, 7, 7, 512)   2048        ['5b_identity_block_conv1[0][0]']rmalization)                                                                                     5b_identity_block_relu1 (Activ  (None, 7, 7, 512)   0           ['5b_identity_block_bn1[0][0]']  ation)                                                                                           5b_identity_block_conv2 (Conv2  (None, 7, 7, 512)   2359808     ['5b_identity_block_relu1[0][0]']D)                                                                                               5b_identity_block_bn2 (BatchNo  (None, 7, 7, 512)   2048        ['5b_identity_block_conv2[0][0]']rmalization)                                                                                     5b_identity_block_relu2 (Activ  (None, 7, 7, 512)   0           ['5b_identity_block_bn2[0][0]']  ation)                                                                                           5b_identity_block_conv3 (Conv2  (None, 7, 7, 2048)  1050624     ['5b_identity_block_relu2[0][0]']D)                                                                                               5b_identity_block_bn3 (BatchNo  (None, 7, 7, 2048)  8192        ['5b_identity_block_conv3[0][0]']rmalization)                                                                                     global_average_pooling2d_14 (G  (None, 2048)        0           ['5b_identity_block_bn3[0][0]']  lobalAveragePooling2D)                                                                           reshape_14 (Reshape)           (None, 1, 1, 2048)   0           ['global_average_pooling2d_14[0][0]']                             dense_28 (Dense)               (None, 1, 1, 128)    262144      ['reshape_14[0][0]']             dense_29 (Dense)               (None, 1, 1, 2048)   262144      ['dense_28[0][0]']               multiply_14 (Multiply)         (None, 7, 7, 2048)   0           ['5b_identity_block_bn3[0][0]',  'dense_29[0][0]']               5b_identity_block_add (Add)    (None, 7, 7, 2048)   0           ['multiply_14[0][0]',            '5a_conv_block_relu4[0][0]']    5b_identity_block_relu4 (Activ  (None, 7, 7, 2048)  0           ['5b_identity_block_add[0][0]']  ation)                                                                                           5c_identity_block_conv1 (Conv2  (None, 7, 7, 512)   1049088     ['5b_identity_block_relu4[0][0]']D)                                                                                               5c_identity_block_bn1 (BatchNo  (None, 7, 7, 512)   2048        ['5c_identity_block_conv1[0][0]']rmalization)                                                                                     5c_identity_block_relu1 (Activ  (None, 7, 7, 512)   0           ['5c_identity_block_bn1[0][0]']  ation)                                                                                           5c_identity_block_conv2 (Conv2  (None, 7, 7, 512)   2359808     ['5c_identity_block_relu1[0][0]']D)                                                                                               5c_identity_block_bn2 (BatchNo  (None, 7, 7, 512)   2048        ['5c_identity_block_conv2[0][0]']rmalization)                                                                                     5c_identity_block_relu2 (Activ  (None, 7, 7, 512)   0           ['5c_identity_block_bn2[0][0]']  ation)                                                                                           5c_identity_block_conv3 (Conv2  (None, 7, 7, 2048)  1050624     ['5c_identity_block_relu2[0][0]']D)                                                                                               5c_identity_block_bn3 (BatchNo  (None, 7, 7, 2048)  8192        ['5c_identity_block_conv3[0][0]']rmalization)                                                                                     global_average_pooling2d_15 (G  (None, 2048)        0           ['5c_identity_block_bn3[0][0]']  lobalAveragePooling2D)                                                                           reshape_15 (Reshape)           (None, 1, 1, 2048)   0           ['global_average_pooling2d_15[0][0]']                             dense_30 (Dense)               (None, 1, 1, 128)    262144      ['reshape_15[0][0]']             dense_31 (Dense)               (None, 1, 1, 2048)   262144      ['dense_30[0][0]']               multiply_15 (Multiply)         (None, 7, 7, 2048)   0           ['5c_identity_block_bn3[0][0]',  'dense_31[0][0]']               5c_identity_block_add (Add)    (None, 7, 7, 2048)   0           ['multiply_15[0][0]',            '5b_identity_block_relu4[0][0]']5c_identity_block_relu4 (Activ  (None, 7, 7, 2048)  0           ['5c_identity_block_add[0][0]']  ation)                                                                                           avg_pool (AveragePooling2D)    (None, 1, 1, 2048)   0           ['5c_identity_block_relu4[0][0]']flatten (Flatten)              (None, 2048)         0           ['avg_pool[0][0]']               dropout (Dropout)              (None, 2048)         0           ['flatten[0][0]']                fc2 (Dense)                    (None, 4)            8196        ['dropout[0][0]']                ==================================================================================================
Total params: 26,110,852
Trainable params: 26,057,732
Non-trainable params: 53,120
_______________________________________________________________________________________
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])epochs = 30history = model.fit(train_ds,validation_data=val_ds,epochs=epochs,
)
Epoch 1/30
57/57 [==============================] - 120s 2s/step - loss: 1.6071 - accuracy: 0.5022 - val_loss: 1.6805 - val_accuracy: 0.3628
Epoch 2/30
57/57 [==============================] - 101s 2s/step - loss: 1.1572 - accuracy: 0.5973 - val_loss: 2.9043 - val_accuracy: 0.3628
Epoch 3/30
57/57 [==============================] - 103s 2s/step - loss: 1.0106 - accuracy: 0.6438 - val_loss: 3.5882 - val_accuracy: 0.2655
Epoch 4/30
57/57 [==============================] - 104s 2s/step - loss: 0.6960 - accuracy: 0.7345 - val_loss: 3.8824 - val_accuracy: 0.2920
Epoch 5/30
57/57 [==============================] - 103s 2s/step - loss: 0.6722 - accuracy: 0.8009 - val_loss: 1.9140 - val_accuracy: 0.3805
Epoch 6/30
57/57 [==============================] - 102s 2s/step - loss: 0.5720 - accuracy: 0.8009 - val_loss: 1.3526 - val_accuracy: 0.5133
Epoch 7/30
57/57 [==============================] - 103s 2s/step - loss: 0.5234 - accuracy: 0.8252 - val_loss: 1.6950 - val_accuracy: 0.6195
Epoch 8/30
57/57 [==============================] - 103s 2s/step - loss: 0.5409 - accuracy: 0.8186 - val_loss: 1.0905 - val_accuracy: 0.5752
Epoch 9/30
57/57 [==============================] - 102s 2s/step - loss: 0.4960 - accuracy: 0.8230 - val_loss: 1.0269 - val_accuracy: 0.5664
Epoch 10/30
57/57 [==============================] - 106s 2s/step - loss: 0.3521 - accuracy: 0.8761 - val_loss: 0.7942 - val_accuracy: 0.7965
Epoch 11/30
57/57 [==============================] - 103s 2s/step - loss: 0.2162 - accuracy: 0.9204 - val_loss: 0.9084 - val_accuracy: 0.7168
Epoch 12/30
57/57 [==============================] - 103s 2s/step - loss: 0.3159 - accuracy: 0.9093 - val_loss: 1.8489 - val_accuracy: 0.7611
Epoch 13/30
57/57 [==============================] - 102s 2s/step - loss: 0.2727 - accuracy: 0.8960 - val_loss: 2.2825 - val_accuracy: 0.7345
Epoch 14/30
57/57 [==============================] - 104s 2s/step - loss: 0.1902 - accuracy: 0.9381 - val_loss: 1.1050 - val_accuracy: 0.7257
Epoch 15/30
57/57 [==============================] - 105s 2s/step - loss: 0.2085 - accuracy: 0.9292 - val_loss: 0.3290 - val_accuracy: 0.9027
Epoch 16/30
57/57 [==============================] - 105s 2s/step - loss: 0.1697 - accuracy: 0.9358 - val_loss: 1.0470 - val_accuracy: 0.7965
Epoch 17/30
57/57 [==============================] - 106s 2s/step - loss: 0.1955 - accuracy: 0.9381 - val_loss: 9.2690 - val_accuracy: 0.3540
Epoch 18/30
57/57 [==============================] - 103s 2s/step - loss: 0.3337 - accuracy: 0.8960 - val_loss: 1.6920 - val_accuracy: 0.7699
Epoch 19/30
57/57 [==============================] - 103s 2s/step - loss: 0.1869 - accuracy: 0.9292 - val_loss: 9.7153 - val_accuracy: 0.3628
Epoch 20/30
57/57 [==============================] - 103s 2s/step - loss: 0.2506 - accuracy: 0.9049 - val_loss: 0.9142 - val_accuracy: 0.7876
Epoch 21/30
57/57 [==============================] - 107s 2s/step - loss: 0.1941 - accuracy: 0.9358 - val_loss: 0.7740 - val_accuracy: 0.8142
Epoch 22/30
57/57 [==============================] - 103s 2s/step - loss: 0.0971 - accuracy: 0.9690 - val_loss: 0.5248 - val_accuracy: 0.8230
Epoch 23/30
57/57 [==============================] - 104s 2s/step - loss: 0.0549 - accuracy: 0.9845 - val_loss: 2.8425 - val_accuracy: 0.6637
Epoch 24/30
57/57 [==============================] - 107s 2s/step - loss: 0.0251 - accuracy: 0.9934 - val_loss: 0.1835 - val_accuracy: 0.9292
Epoch 25/30
57/57 [==============================] - 110s 2s/step - loss: 0.0131 - accuracy: 1.0000 - val_loss: 0.2147 - val_accuracy: 0.9469
Epoch 26/30
57/57 [==============================] - 103s 2s/step - loss: 0.0043 - accuracy: 1.0000 - val_loss: 0.1484 - val_accuracy: 0.9469
Epoch 27/30
57/57 [==============================] - 106s 2s/step - loss: 0.0029 - accuracy: 1.0000 - val_loss: 0.1338 - val_accuracy: 0.9558
Epoch 28/30
57/57 [==============================] - 107s 2s/step - loss: 0.0013 - accuracy: 1.0000 - val_loss: 0.1428 - val_accuracy: 0.9469
Epoch 29/30
57/57 [==============================] - 108s 2s/step - loss: 6.1017e-04 - accuracy: 1.0000 - val_loss: 0.1412 - val_accuracy: 0.9469
Epoch 30/30
57/57 [==============================] - 111s 2s/step - loss: 5.0776e-04 - accuracy: 1.0000 - val_loss: 0.1457 - val_accuracy: 0.9381
# 获取实际训练轮数
actual_epochs = len(history.history['accuracy'])acc = history.history['accuracy']
val_acc = history.history['val_accuracy']loss = history.history['loss']
val_loss = history.history['val_loss']epochs_range = range(actual_epochs)plt.figure(figsize=(12, 4))# 绘制准确率
plt.subplot(1, 2, 1)
plt.plot(epochs_range, acc, label='Training Accuracy')
plt.plot(epochs_range, val_acc, label='Validation Accuracy')
plt.legend(loc='lower right')
plt.title('Training and Validation Accuracy')# 绘制损失
plt.subplot(1, 2, 2)
plt.plot(epochs_range, loss, label='Training Loss')
plt.plot(epochs_range, val_loss, label='Validation Loss')
plt.legend(loc='upper right')
plt.title('Training and Validation Loss')plt.show()

相关文章:

深度学习案例:ResNet50模型+SE-Net

本文为为🔗365天深度学习训练营内部文章 原作者:K同学啊 一 回顾ResNet模型 ResNet,即残差网络,是由微软研究院的Kaiming He及其合作者于2015年提出的一种深度卷积神经网络架构。该网络架构的核心创新在于引入了“残差连接”&…...

第三方Cookie的消亡与Google服务器端标记的崛起

随着互联网用户对隐私保护的关注日益增强,各大浏览器正在逐步淘汰第三方Cookie。这一变革深刻影响了广告商和数字营销人员的用户跟踪和数据分析方式。然而,Google推出的服务器端标记技术为这一挑战提供了新的解决方案。 什么是第三方Cookie? …...

arkTS:使用ArkUI实现用户信息的持久化管理与自动填充(PersistentStorage)

arkUI:使用ArkUI实现用户信息的持久化管理与自动填充(PersistentStorage) 1 主要内容说明2 例子2.1 登录页2.1.1登陆页的相关说明2.1.1.1 持久化存储的初始化2.1.1.2 输入框2.1.1.3 记住密码选项2.1.1.4 登录按钮的逻辑2.1.1.5 注册跳转 2.1.…...

01-Zabbix监控快速入门

01-Zabbix监控快速入门 1、监控知识基本概述1.1 什么是监控1.2 为何需要监控1.3 如何进行监控 2、单机时代如何监控2.1 监控CPU2.2 监控内存2.3 监控磁盘2.4 监控⽹络2.5 监控TCP2.6 监控脚本示例 3、常⻅的监控⽅案3.1 Cacti3.2 Nagios3.3 Zabbix3.4 Prometheus3.5 商业监控⽅…...

docker 怎么启动nginx

在Docker中启动Nginx容器是一个简单的过程。以下是启动Nginx容器的步骤: 拉取Nginx镜像: 首先,你需要从Docker Hub拉取Nginx的官方镜像。使用以下命令: docker pull nginx运行Nginx容器: 使用docker run命令来启动一个…...

1-1 Gerrit实用指南

注:学习gerrit需要拥有git相关知识,如果没有学习过git请先回顾git相关知识点 黑马程序员git教程 一小时学会git git参考博客 git 实操博客 1.0 定义 Gerrit 是一个基于 Web 的代码审查系统,它使用 Git 作为底层版本控制系统。Gerrit 的主要功…...

数据库深入(学习笔记)

多表查询 概述: 多表查询:指从多张表中查询数据笛卡尔积:笛卡尔积是指在数学中,两个集合(A集合,B集合)的所有组合情况。 分类: 连接查询 内连接:相当于查询A、B交集部分数据 隐式内连接:sele…...

PostgreSQL17.x创建数据库及数据库信息查看命令

PostgreSQL17.x创建数据库及数据库信息查看命令 文章目录 PostgreSQL17.x创建数据库及数据库信息查看命令1.创建数据库1. 使用 SQL 命令创建数据库2. 创建数据库并指定字符集3. 验证数据库是否创建成功3. 远程连接1. 修改 PostgreSQL 配置文件2. 修改客户端认证配置4. 指定某个…...

Canal mysql数据库同步到es

Canal与Elasticsearch集成指南 [可视化工具](https://knife.blog.csdn.net/article/details/126348055)下载Canal 1.1.5版本 (alpha-2) 请从GitHub Releases下载Canal 1.1.5版本中间版本alpha-2。仅需下载canal.deployer和canal.adapter组件。 安装Elasticsearch 确保已安装…...

React 前端框架1

一、React 简介 (一)什么是 React React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开源并维护。它采用了组件化的开发思想,允许开发者将复杂的 UI 拆分成一个个独立、可复用的小组件,就如同搭积木一般&am…...

什么是Batch Normalization?

一、概念 Batch Normalization是在2015年提出的数据归一化方法,主要用在深度神经网络中激活层之前。它的主要作用是加快模型训练时的收敛速度,使模型训练过程更加稳定,避免梯度爆炸或消失,并起到一定的正则化作用,有时…...

rtc-pcf8563 0-0051: low voltage detected, date/time is not reliable

解决方法: 1、先测量pcf8563电源电压,是否满足要求。 2、pcf8563首次操作。第一次读取pcf8563的时间,未初始化,非法,芯片门槛电压检测配置不合理。使用hwclock命令写入一次,即可解决。 hwclock -f /dev/…...

tauri下的两个常用rust web框架:Leptos和Trunk

tauri下有两个常用rust web框架,就是Leptos和Trunk Leptos Leptos 是一个基于 Rust 的 Web 框架。您可以在他们的官方网站上了解更多关于 Leptos 的信息。本指南适用于 Leptos 的 0.6 版本。 Leptos Leptos 是一个用 Rust 编写的现代、高效且安全的 Web 框架。它…...

vscode + conda + qt联合开发

安装vscode 安装conda 清华大学开源软件镜像(Anaconda下载)_清华大学镜像-CSDN博客 conda create新建一个环境,激活这个环境,然后安装pyside6 pip install pyside6 -i https://pypi.tuna.tsinghua.edu.cn/simple 安装成功后输入 pip list查看是否安装…...

mac终端自定义命令打开vscode

1.打开终端配置文件 open -e ~/.bash_profile终端安装了zsh,那么配置文件是.zshrc(打开zsh配置,这里举🌰使用zsh) sudo open -e ~/.zshrc 2.在zshrc配置文件中添加新的脚本(这里的code就是快捷命令可以进…...

关于单片机的原理与应用!

成长路上不孤单😊😊😊😊😊😊 【14后😊///计算机爱好者😊///目前正在学习C😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于单片…...

【手术显微镜】市场高度集中,由于高端手术显微镜的制造技术主要掌握于欧美企业

摘要 HengCe (恒策咨询)是全球知名的大型咨询机构,长期专注于各行业细分市场的调研。行业层面,重点关注可能存在“卡脖子”的高科技细分领域。企业层面,重点关注在国际和国内市场在规模和技术等层面具有代表性的企业,…...

速盾高防cdn支持移动端独立缓存

随着移动互联网的快速发展,移动端网页访问量也越来越大。然而,移动端的网络环境相对不稳定,用户体验可能会受到影响。因此,使用高防CDN来加速移动端网页访问,成为越来越多网站运营者的首选。 速盾高防CDN是一种分布式…...

java中的运算符

大家好,今天来看看java中运算符的一些知识点,理解好运算符是我们在写代码的一大重点,那么我们就来看看吧。 运算符:对操作数进行操作时的符号.,不同运算筹操作的含义不同. 一、算术算片. 1、基本四则运算符:加减乘除模(一*/%) 注意:都是二元…...

视频流媒体服务解决方案之Liveweb视频汇聚平台

一,Liveweb视频汇聚平台简介: LiveWeb是深圳市好游科技有限公司开发的一套综合视频汇聚管理平台,可提供多协议(RTSP/RTMP/GB28181/海康Ehome/大华,海康SDK等)的视频设备接入,支持GB/T28181上下级联&#xf…...

什么是六边形图?

什么是六边形图?) 为什么用六边形图?六边形图的构造原理如何绘制六边形图?(代码示例)结果解读总结 六边形图是一种特殊的二维数据可视化方法,用来展示两个变量之间的关系。它用许多小的六边形&a…...

淘宝天猫API接口探索:店铺商品全览与拍立淘图片搜索实战

在当今的电商时代,淘宝和天猫作为两大巨头,为开发者提供了丰富的API接口,以实现与平台的数据交互。本文将带您探索如何使用淘宝天猫的API接口来获取店铺所有商品列表,以及如何通过拍立淘(图片搜索)功能找到…...

.net6.0 mvc 传递 model 实体参数(无法对 null 引用执行运行时绑定)

说一下情况: 代码没问题,能成功从数据库里查到数据,能将数据丢给ViewBag.XXXX, 在View页面也能获取到 ViewBag.XXXX的值,但是发布到线上后报这个错: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 无法对 …...

电子电气架构 --- 面向服务的汽车诊断架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…...

困扰解决:mfc140u.dll丢失的解决方法,多种有效解决方法全解析

当电脑提示“mfc140u.dll丢失”时,这可能会导致某些程序无法正常运行,给用户带来不便。不过,有多种方法可以尝试解决这个问题。这篇文章将以“mfc140u.dll丢失的解决方法”为主题,教大家有效解决mfc140u.dll丢失。 判断是否是“mf…...

OpenCV_Code_LOG

孔洞填充 void fillHole(const Mat srcBw, Mat &dstBw) {Size m_Size srcBw.size();Mat TempMat::zeros(m_Size.height2,m_Size.width2,srcBw.type());//延展图像srcBw.copyTo(Temp(Range(1, m_Size.height 1), Range(1, m_Size.width 1)));cv::floodFill(Temp, Point(…...

【python】OpenCV—Tracking(10.5)—dlib

文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、涉及到的库函数dlib.correlation_tracker() 6、参考 1、功能描述 基于 dlib 库,实现指定类别的目标检测和单目标跟踪 2、代码实现 caffe 模型 https://github.com/MediosZ/MobileNet-SSD/tree/master/…...

音视频入门基础:MPEG2-TS专题(9)——FFmpeg源码中,解码TS Header的实现

一、引言 FFmpeg源码对MPEG2-TS传输流/TS文件解复用时,在通过read_packet函数读取出一个transport packet后,会调用handle_packet函数来处理该transport packet: static int handle_packets(MpegTSContext *ts, int64_t nb_packets) { //..…...

React 自定义钩子:useOnlineStatus

我们今天的重点是 “useOnlineStatus” 钩子,这是 React 自定义钩子集合中众多精心制作的钩子之一。 Github 的:https://github.com/sergeyleschev/react-custom-hooks import { useState } from "react" import useEventListener from &quo…...

【C++】vector

vector 是一种容器,广泛存在于多种编程语言中,如 C、Rust、Java 等。它是一种动态数组,可以存储任意类型的元素,并且可以根据需要自动调整大小。下面我将详细介绍 vector 的概念和使用方法,主要以 C 中的 std::vector …...

海外centos服务器如何更换yum镜像源

今天遇到一个海外服务器,需要更新yum源,发现使用国内的(阿里云,腾讯云,华为云等),都无法实现,正常更新,主要问题还是服务器的网络无法访问国内的,所以,本章教程,记录一下,我验证过的方法。 1、备份或删除 源已经停止维护了,也可以将其直接删除,也不会有影响。如…...

go和python的遍历对比

Go 和 Python 都有强大的循环控制结构,但它们在实现和行为上有所不同,特别是关于索引变量的管理、迭代器的使用以及如何在循环中修改循环变量。以下是 Go 和 Python 循环的详细差异分析: 1. 循环类型: Go: Go 使用 …...

ML 系列:第 37 节 — 统计中的估计

文章目录 一、说明二、统计学中估计的目的三、统计学中的估计类型四、什么是点估计量?4.1 基本概念4.2 点估计量的性质4.3 点估计与区间估计4.4 寻找点估计的常用方法 五、区间估计5.1 什么是区间估计?5.1.1 置信区间5.1.2 预测区间5.1.3 容差区间Tolera…...

四、初识C语言(4)

一、作业&#xff1a;static修饰局部变量 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> //作业&#xff1a;static修饰局部变量 int sum (int a) {int c 0;static int b 3;c 1;b 2;return (abc); } int main() {int i 0;int a …...

不同云计算网络安全等级

导读云计算的本质是服务&#xff0c;如果不能将计算资源规模化/大范围的进行共享&#xff0c;如果不能真正以服务的形式提供&#xff0c;就根本算不上云计算。 等级保护定级流程 定级是开展网络安全等级保护工作的 “基本出发点”&#xff0c;虚拟化技术使得传统的网络边界变…...

基于深度学习的甲状腺结节影像自动化诊断系统(PyQt5界面+数据集+训练代码)

随着医学影像技术的发展&#xff0c;计算机辅助诊断在甲状腺结节的早期筛查中发挥着重要作用。甲状腺结节的良恶性鉴别对临床治疗具有重要意义&#xff0c;但传统的诊断方法依赖于医生的经验和影像学特征&#xff0c;存在一定的主观性和局限性。为了解决这一问题&#xff0c;本…...

Codigger Desktop:多样 Look 设计,全新 Game Look 带来趣味体验

Codigger Desktop提供了多种不同的Look设计&#xff0c;以满足用户的不同需求和偏好。包括Keyboard Look、Value Look、Game Look、Location Look、Size Look、Stage Look和Tile Look。 Keyboard Look&#xff1a;提供类似键盘布局的界面设计&#xff0c;方便用户快速访问常用功…...

redis下载、基础数据类型、操作讲解说明,持久化、springboot整合等

1 Redis是什么 官网&#xff1a;https://redis.io 开发者&#xff1a;Antirez Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器&#xff0c;是一个基于内存的键值型NoSQL数据库。 Redis是一个开源的、高性能的键值对存储系统&#xff0c;它支持多种数据结构&…...

原生js上传图片

无样式上传图片 创建一个 FormData 对象&#xff1a;这个对象可以用于存储数据。 将文件添加到 FormData 对象&#xff1a;通过 append() 方法&#xff0c;将用户选择的文件添加到 formData 对象中。 使用 fetch 发送请求&#xff1a;使用 fetch API 或者其他方法将 FormDat…...

【SpringBoot+Vue】x-admin管理系统跟做

技术栈 前端技术说明Vue前端框架Vuex全局状态管理框架ElementUI前端UI框架Axios前端HTTP框架vue-element-admin项目脚手架 后端技术说明SpringBoot容器MVC框架MyBatisORM框架MyBatis-plusMyBatis增强工具Redis非关系型数据库 数据库准备 SET NAMES utf8mb4; SET FOREIGN_KE…...

计算机网络 —— HTTP 协议(详解)

前一篇文章&#xff1a;网页版五子棋—— WebSocket 协议_网页可以实现websocket吗-CSDN博客 目录 前言 一、HTTP 协议简介 二、HTTP 协议格式 1.抓包工具的使用 2.抓包工具的原理 3.抓包结果 4.HTTP协议格式总结 三、HTTP 请求 1. URL &#xff08;1&#xff09;UR…...

MacOS 配置github密钥

MacOS 配置github密钥 1. 生成GitHub的SSH密钥对 ssh-keygen -t ed25519 -C "xxxxxxx.com" -f ~/.ssh/id_ed25519_github 其中 xxxxxxxxxxx.com 是注册github、gitee和gitlab的绑定账号的邮箱 -t ed25519:生成密钥的算法为ed25519&#xff08;ed25519比rsa速度快&…...

我的第一个创作纪念日 —— 梦开始的地方

前言 时光荏苒&#xff0c;转眼间&#xff0c;我已经在CSDN这片技术沃土上耕耘了365天 今天&#xff0c;我迎来了自己在CSDN的第1个创作纪念日&#xff0c;这个特殊的日子不仅是对我过去努力的肯定&#xff0c;更是对未来持续创作的激励 机缘 回想起初次接触CSDN&#xff0c;那…...

float globalMapVIsualizationLeafSize; 的中文意思是什么

1.在visual studio 中新建文件 没有包含#include <string>头文件&#xff0c;也可以使用 str2.append(", C");吗&#xff1f; 在 Visual Studio 或任何其他 C 开发环境中&#xff0c;即使新建的文件中没有显式包含 #include <string> 头文件&#xff0c…...

合规性要求对漏洞管理策略的影响

讨论漏洞管理中持续面临的挑战&#xff0c;包括确定漏洞的优先级和解决修补延迟问题。 介绍合规性要求以及自动化如何简化漏洞管理流程。 您认为为什么尽管技术不断进步&#xff0c;但优先考虑漏洞和修补延迟等挑战仍然存在&#xff1f; 企业基础设施日益复杂&#xff0c;攻…...

【Delphi】modbus-TCP 协议库

在日常开发中&#xff0c;也会遇到使用modbus的部件&#xff0c;比如温度控制器、读卡器等等&#xff0c;那么使用Delphi开发&#xff0c;也就必须遵守modbus-TCP协议&#xff0c;如果自己使用TCP控件写也没有问题&#xff0c;不过如果有开源的三方库&#xff0c;别人已经调试过…...

乐橙云小程序插件接入HbuilderX

乐橙插件使用&#xff1a; 1.配置app.json文件&#xff0c;uniapp中在mainfest.json中配置 https://uniapp.dcloud.net.cn/collocation/manifest.html#mp-weixin ** 2、集成插件页面.json文件 ** uniapp在 pages.json 对应页面的 style -> usingComponents 引入组件&…...

Python世界:复制粘贴?没那么简单!浅谈深拷贝与浅拷贝

Python世界&#xff1a;复制粘贴&#xff1f;没那么简单&#xff01;浅谈深拷贝与浅拷贝 问题引入切片拷贝是深还是浅&#xff1f;深拷贝和浅拷贝到底有啥区别&#xff1f;本文小结 问题引入 Python实现中&#xff0c;最近遇到个小问题&#xff0c;对其中的拷贝理解更深了些&a…...

vue3实现el-table的拖拽

我这里使用的是 sortablejs 插件; 安装命令: npm install sortablejs --save 注意点: 你的表格数据中要有id作为key去使用; <div class"draggable"><el-table row-key"id" :data"form.tableData" style"width: 100%" max-…...

Apache SSI 远程命令执行漏洞

目录 1、漏洞描述 2、访问页面 3、dirsearch工具爆破出上传目录 ​编辑 4、登录后台 5、上传shell.shtml一句话木马文件 6、拿到flag 1、漏洞描述 在测试任意文件上传漏洞的时候&#xff0c;目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持&a…...