主頁 >  其他 > ShuffleNetV1:極致輕量化卷積神經網路(分組卷積+通道重排)

ShuffleNetV1:極致輕量化卷積神經網路(分組卷積+通道重排)

2022-10-13 08:58:24 其他

參考論文:ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices

作者:Xiangyu Zhang ,Xinyu Zhou,Mengxiao Lin,Jian Sun

 

 

1、論文摘要
??我們引入了一個高效計算的CNN結構名字叫做shuffleNet,這個結構被設計用來解區域署算力非常有限的移動設備問題,這個新的結構使用了兩個新的操作,pointwise group convolution 和 channel shuffle能夠在極大減少計算量的同時保持一定的精度,我們在ImageNet classification和MS COCO目標檢測資料集上做實驗論證了ShuffleNet和其他的結構相比有著很好的性能,比如,相比于mobilenet,shufflenet在ImageNet 分類任務上有著更低的top-1錯誤率(錯誤率是7.8%)需要的計算量為40MFLOPs,在一個ARM-based移動設備,ShuffleNet相比于AlexNet實作了保持一定的精度的同時,實作了13A的速度,

 

2 Group Convolution(分組卷積)
??第一個創新點就是分組1*1卷積

 

??簡單來說分組卷積就是將特征圖分為不同的組,再對每組特征圖分別進行卷積,這里的分組一般都是分為 n 個等份,理論上其實不是等份也可以,不 過一般為了實作方便都是分為等份,分組卷積的好處主要是可以減少模型的計算量和訓練參 數,同時對模型準確率影響不大,甚至有可能會提高模型準確率,

 

 

 

在分組卷積中,每個卷積核只處理部分通道,比如上圖中,紅色卷積核只處理紅色的通道,綠色卷積核只處理綠色通道,黃色卷積核只處理黃色通道,此時每個卷積核有2個通道,每個卷積核生成一張特征圖,

??下面我們通過幾個圖來詳細了解一下,下圖為普通卷積

 

 

 

圖中的 Conv 表示卷積,

 

??這里特征圖的大小和卷積和的大小都不是重點內容,所以圖中沒有標出,我們只要能看 出 6 個特征圖卷積后得到 12 個特征圖就可以了,不過為了讓大家理解分組卷積的計算量和 權值數量這里我們舉例計算一下,假設特征圖大小是 28×28,卷積核大小為 5×5,Same Padding,卷積層權值數量為 5×5×6×12+12=1812,乘法計算量為 5×5×28×28×6× 12=1411200,

 

??下面我們看一下分組卷積,分組卷積一般都是把特征圖分為 n 個等份,然后再對 n 個等 份的特征圖分別卷積,這里的 n 可以人為設定,如圖所示,

 

圖中的 Conv 表示卷積,

??為了跟普通卷積對比,所以這里分組卷積的例子輸入也是 6 個特征圖,輸出也是 12 個特 征圖,這里我們可以看到把 6 個特征圖分為了 3 組,每組 2 個特征圖,每組分別進行卷積, 卷積后得到 4 個特征圖,最后再把 3 個組共 12 個特征圖組合起來,假設特征圖大小是 28× 28,卷積核大小為 5×5,Same Padding,這里卷積層權值數量為 5×5×2×4× 3+12=612,乘法計算量為 5×5×28×28×2×4×3=470400,權值數量和計算量都約為普通 卷積的 1/3,

分組卷積程序也可以描述如下:

1、假設輸入的形狀為 H × W × C ,用 k 個 h × w 的卷積核對其進行卷積操作;

2、把輸入分為g組,每組形狀為H × W × ( C / g )(假設可以整除)

3、把卷積核也分為g組,每組為k/g(假設可整除)個h × w 卷積核

4、按順序,每組的輸入和該組內的卷積核分別做標準卷積操作,輸出 g 組形狀為H ′ × W ′ × ( k / g ) ;

5、將這 g 組特征合并起來,得到最終形狀為H ′ × W ′ × k 的特征;

下圖為分兩組時的舉例:

或者看下圖

 

 

左邊標準卷積,每個卷積核處理12個通道

右邊分組卷積,假設輸入的12個通道分為3組,每個卷積核只處理4個通道

3、Channel Shuffle(通道重排)

 

圖1

圖1(a)說明了兩個堆疊組卷積層的情況,很明顯,某個組的輸出只與組內的輸入有關,此屬性會阻塞通道組之間的資訊流并削弱表示,

??如果我們允許組卷積從不同組中獲取輸入資料(如圖 1(b)所示),輸入和輸出通道將完全相關,

??對于上一層生成的特征圖,我們可以先將每組中的通道劃分為幾個子組,然后將不同的子組饋入下一層中的每個組,這可以通過通道混洗操作有效而優雅地實作(圖 1(c)):假設一個卷積層具有 g 個組,其輸出有 g × n 個通道;我們首先將輸出通道維度重塑為 (g, n),轉置然后將其展平作為下一層的輸入,請注意,即使兩個卷積的組數不同,該操作仍然有效,此外,channel shuffle 也是可微分的,這意味著它可以嵌入到網路結構中進行端到端訓練,

??舉個例子來說,如下圖,分組卷積生成的三組特征圖,第一組1~4;第二組5~8;第三組9~12,先將特征圖重塑,為三行N列的矩形,然后進行轉置,變成N行三列,最后壓平,從二維tensor變成一維tensor,每一組的特征圖交叉組合在一起,實作各組之間的資訊交融,

4、ShuffleNet Unit

 

 

 圖2

圖 2. ShuffleNet 單元

a) 具有深度卷積 (DWConv) [3, 12] 的殘差單元 [9];

b) 具有逐點組卷積 (GConv) 和通道混洗的 ShuffleNet 單元;

c) ShuffleNet 單元,stride = 2.

這里需要注意(b)中第一個分組卷積降維,然后通道重排,在進行3*3的DepthWise卷積,最后使用1*1的分組卷積升維,目的還是讓殘差前后的shape一致,保證可以進行Add操作,

???圖是ShuffleNet的下采樣模塊,注意,這里左右分支不是使用Add操作,因為最后左右分支的shape是不一致的,右分支的通道數和左分支的通道數疊加 == 輸出特征圖的通道數out_channel(重點,和上面的殘差是不一樣的),殘差邊上使用了池化視窗為3*3,stride=2的平均池化Add是逐元素求個,Concat是某個方向的疊加,這里是再通道方向疊加,

5、ShuffleNet網路結構設計

 

上圖為不同分組數的ShuffleNet網路結構,通常我們將g=3的那一個網路作為baseline Network

        我們在表 1 中展示了整體 ShuffleNet 架構,所提出的網路主要由一組 ShuffleNet 單元組成,分為三個階段,每個階段的第一個構建塊應用 stride = 2,一個階段內的其他超引數保持不變,下一個階段的輸出通道加倍,與 [9] 類似,我們將每個 ShuffleNet 的瓶頸通道數設定為輸出通道的 1/4

??上表中stage2的第一個block上不用GConv,用普通的1*1卷積,因為此時輸入通道數只有24,太少了,且每個stage中的第一個block的stride=2(對應ShuffleNet Unit中的下采樣模塊,c圖),其他block的stride=1(對應ShuffleNet基本模塊,圖b)

6、代碼復現

這里只是簡單復現下,細節問題并沒有管,比如那個stage2的第一個block上不用GConv,用普通的1*1卷積就沒管,

1 import tensorflow as tf
2 from tensorflow.keras.layers import concatenate, Conv2D, Activation, BatchNormalization, DepthwiseConv2D
3 from tensorflow.keras.layers import add, AvgPool2D,MaxPool2D,GlobalAveragePooling2D,Dense
4 from tensorflow.keras.models import Model
5 from plot_model import plot_model

6.1 Channel Shuffle模塊

 1 # 通道重排,跨組資訊互動
 2 def channel_shuffle(inputs, num_groups):
 3     # 先得到輸入特征圖的shape,b:batch size,h,w:一張圖的size,c:通道數
 4     b, h, w, c = inputs.shape
 5 
 6     # 確定shape = [b, h, w, num_groups, c//num_groups],通道維度原來是一個長為c的一維tensor,變成num_groups行n列的矩陣
 7     # 在通道維度上將特征圖reshape為num_groups行n列的矩陣
 8     x_reshaped = tf.reshape(inputs, [-1, h, w, num_groups, c // num_groups])
 9 
10     # 確定轉置的矩形的shape = [b, h, w, c//num_groups, num_groups]
11     # 矩陣轉置,最后兩個維度從num_groups行n列變成n行num_groups列
12     x_transposed = tf.transpose(x_reshaped, [0, 1, 2, 4, 3])
13 
14     # 重新排列,shotcut和x的通道像素交叉排列,通道維度重新變成一維tensor
15     output = tf.reshape(x_transposed, [-1, h, w, c])
16     # 回傳通道維度交叉排序后的tensor
17     return output

6.2 分組卷積模塊

我這里tensorflow版本為2.0,我看官網API中高版本的Conv2D引數中已經有了groups屬性了,

1 def group_conv(inputs, filters, kernel, strides, num_groups):
2     conv_side_layers_tmp = tf.split(inputs, num_groups, axis=3)
3     conv_side_layers = []
4     for layer in conv_side_layers_tmp:
5         conv_side_layers.append(tf.keras.layers.Conv2D(filters // num_groups, kernel, strides, padding='same')(layer))
6     x = concatenate(conv_side_layers, axis=-1)
7 
8     return x

6.3 普通卷積模塊

1 # 普通卷積:卷積+批標準化+ReLU激活
2 def conv(inputs, filters, kernel_size, stride=1):
3     x = Conv2D(filters, kernel_size, stride, padding='same', use_bias=False)(inputs)
4     x = BatchNormalization()(x)
5     x = Activation('relu')(x)
6     return x

6.4 DepthWise卷積

1 # DWConv:深度可分離卷積塊(論文中DWConv卷積核全是3*3,步長有1和2兩種)
2 def depthwise_conv_bn(inputs, kernel_size, stride=1):
3     x = DepthwiseConv2D(kernel_size=kernel_size,
4                         strides=stride,
5                         padding='same',
6                         use_bias=False)(inputs)
7     x = BatchNormalization()(x)
8     return x

注意,這里沒有用ReLU

6.5 ShuffleNetV1基本模塊

 1 # ShuffleNetV1基本模塊(Add)
 2 def shuffleNetUnitA(inputs, num_groups):
 3     in_channels = inputs.shape[-1]
 4     out_channels = in_channels
 5     bottleneck_channels = out_channels // 4
 6 
 7     # 1*1分組卷積降維
 8     x = group_conv(inputs, bottleneck_channels, kernel=1, strides=1, num_groups=num_groups)
 9     x = BatchNormalization()(x)
10     x = Activation('relu')(x)
11     # Channel Shuffle
12     x = channel_shuffle(x, num_groups)
13     # 3*3 DWConv
14     x = depthwise_conv_bn(x, kernel_size=3, stride=1)
15     # 1*1分組卷積升維(要保證殘差連接前后的shape一致)
16     x = group_conv(x, out_channels, kernel=1, strides=1, num_groups=num_groups)
17     x = BatchNormalization()(x)
18     x = add([inputs, x])
19     x = Activation('relu')(x)
20     return x

6.6 ShuffleNetV1下采樣模塊

 1 # ShuffleNetV1下采樣模塊(下采樣模塊,concat)
 2 def shuffleNetUnitB(inputs, out_channels, num_groups):
 3     in_channels = inputs.shape[-1]
 4     # 右分支的通道數和左分支的通道數疊加 == 輸出特征圖的通道數out_channel(重點,和上面的殘差是不一樣的)
 5     out_channels -= in_channels
 6     bottleneck_channels = out_channels // 4
 7     # (1)右分支
 8     # 1*1 GConv
 9     x = group_conv(inputs, bottleneck_channels, kernel=1, strides=1, num_groups=num_groups)
10     x = BatchNormalization()(x)
11     x = Activation('relu')(x)
12     # Channel Shuffle
13     x = channel_shuffle(x, num_groups)
14     # 3*3 DWConv,stide=2
15     x = depthwise_conv_bn(x, kernel_size=3, stride=2)
16     # 1*1 GConv
17     x = group_conv(x, out_channels, kernel=1, strides=1, num_groups=num_groups)
18     x = BatchNormalization()(x)
19 
20     # (2)左分支:3*3 AVG Pool,stride=2
21     y = AvgPool2D(pool_size=3, strides=2, padding='same')(inputs)
22     # 在通道維度上堆疊
23     x = concatenate([y, x], axis=-1)
24     x = Activation('relu')(x)
25     return x

6.5和6.6的通道數需要結合論文好好看,要不你看不懂為什么會這樣設計,原論文中都有解釋,

6.6 stage

??每個stage中的第一個block的stride=2(即下采樣模塊),其他block的stride=1(即基本模塊)

 

1 def stage(inputs, out_channels, num_groups, n):
2     # 每個stage中的第一個block的stride=2(即下采樣模塊),其他block的stride=1(即基本模塊)
3     # 都是按照論文搭建的,要去看論文原文,要不你絕對不理解為什么這樣搭建,嘿嘿,
4     x = shuffleNetUnitB(inputs, out_channels, num_groups)
5 
6     for _ in range(n):
7         x = shuffleNetUnitA(x, num_groups)
8     return x

 

6.7 網路搭建

 1 # first_stage_channels為第一個stage的輸出通道數
 2 # num_groups為分組數量
 3 def ShuffleNet(inputs, first_stage_channels, num_groups,num_classes):
 4     # 構建網路輸入tensor
 5     inputs = tf.keras.Input(shape=inputs)
 6     # 論文中先用了一個普通卷積和池化
 7     x = Conv2D(filters=24,
 8                kernel_size=3,
 9                strides=2,
10                padding='same')(inputs)
11     x = MaxPool2D(pool_size=3, strides=2, padding='same')(x)
12     # 三個stage,每個stage的第一個block的stride=2
13     # 同一個stage內的其他超引數不變,下一個stage的輸出通道數加倍(這個可以通過論文中的表格看出,原文也給了)
14     # n為分組卷積的分組數量,論文中用g表示
15     x = stage(x, first_stage_channels, num_groups, n=3)
16     x = stage(x, first_stage_channels * 2, num_groups, n=7)
17     x = stage(x, first_stage_channels * 4, num_groups, n=3)
18 
19     x = GlobalAveragePooling2D()(x)
20     # 我看過其他大佬的文章說compile的時候再用softmax,那樣更穩定,有時間再試試吧
21     x = Dense(num_classes, activation='softmax')(x)
22 
23     # 完整網路架構
24     model = Model(inputs=inputs, outputs=x)
25     return model

6.8 自定義資料集測驗

1 # 類別數
2 num_classes = 17
3 # 批次大小
4 batch_size = 32
5 # 周期數
6 epochs = 100
7 # 圖片大小
8 image_size = 224

查看模型摘要

1 model=ShuffleNet(inputs[224,224,3],first_stage_channels=240,num_groups=3,num_classes=17)
2 model.summary()
  1 Model: "functional_1"
  2 __________________________________________________________________________________________________
  3 Layer (type)                    Output Shape         Param #     Connected to
  4 ==================================================================================================
  5 input_1 (InputLayer)            [(None, 224, 224, 3) 0
  6 __________________________________________________________________________________________________
  7 conv2d (Conv2D)                 (None, 112, 112, 24) 672         input_1[0][0]
  8 __________________________________________________________________________________________________
  9 max_pooling2d (MaxPooling2D)    (None, 56, 56, 24)   0           conv2d[0][0]
 10 __________________________________________________________________________________________________
 11 tf_op_layer_split (TensorFlowOp [(None, 56, 56, 8),  0           max_pooling2d[0][0]
 12 __________________________________________________________________________________________________
 13 conv2d_1 (Conv2D)               (None, 56, 56, 18)   162         tf_op_layer_split[0][0]
 14 __________________________________________________________________________________________________
 15 conv2d_2 (Conv2D)               (None, 56, 56, 18)   162         tf_op_layer_split[0][1]
 16 __________________________________________________________________________________________________
 17 conv2d_3 (Conv2D)               (None, 56, 56, 18)   162         tf_op_layer_split[0][2]
 18 __________________________________________________________________________________________________
 19 concatenate (Concatenate)       (None, 56, 56, 54)   0           conv2d_1[0][0]
 20                                                                  conv2d_2[0][0]
 21                                                                  conv2d_3[0][0]
 22 __________________________________________________________________________________________________
 23 batch_normalization (BatchNorma (None, 56, 56, 54)   216         concatenate[0][0]
 24 __________________________________________________________________________________________________
 25 activation (Activation)         (None, 56, 56, 54)   0           batch_normalization[0][0]
 26 __________________________________________________________________________________________________
 27 tf_op_layer_Reshape (TensorFlow [(None, 56, 56, 3, 1 0           activation[0][0]
 28 __________________________________________________________________________________________________
 29 tf_op_layer_Transpose (TensorFl [(None, 56, 56, 18,  0           tf_op_layer_Reshape[0][0]
 30 __________________________________________________________________________________________________
 31 tf_op_layer_Reshape_1 (TensorFl [(None, 56, 56, 54)] 0           tf_op_layer_Transpose[0][0]
 32 __________________________________________________________________________________________________
 33 depthwise_conv2d (DepthwiseConv (None, 28, 28, 54)   486         tf_op_layer_Reshape_1[0][0]
 34 __________________________________________________________________________________________________
 35 batch_normalization_1 (BatchNor (None, 28, 28, 54)   216         depthwise_conv2d[0][0]
 36 __________________________________________________________________________________________________
 37 tf_op_layer_split_1 (TensorFlow [(None, 28, 28, 18), 0           batch_normalization_1[0][0]
 38 __________________________________________________________________________________________________
 39 conv2d_4 (Conv2D)               (None, 28, 28, 72)   1368        tf_op_layer_split_1[0][0]
 40 __________________________________________________________________________________________________
 41 conv2d_5 (Conv2D)               (None, 28, 28, 72)   1368        tf_op_layer_split_1[0][1]
 42 __________________________________________________________________________________________________
 43 conv2d_6 (Conv2D)               (None, 28, 28, 72)   1368        tf_op_layer_split_1[0][2]
 44 __________________________________________________________________________________________________
 45 concatenate_1 (Concatenate)     (None, 28, 28, 216)  0           conv2d_4[0][0]
 46                                                                  conv2d_5[0][0]
 47                                                                  conv2d_6[0][0]
 48 __________________________________________________________________________________________________
 49 average_pooling2d (AveragePooli (None, 28, 28, 24)   0           max_pooling2d[0][0]
 50 __________________________________________________________________________________________________
 51 batch_normalization_2 (BatchNor (None, 28, 28, 216)  864         concatenate_1[0][0]
 52 __________________________________________________________________________________________________
 53 concatenate_2 (Concatenate)     (None, 28, 28, 240)  0           average_pooling2d[0][0]
 54                                                                  batch_normalization_2[0][0]
 55 __________________________________________________________________________________________________
 56 activation_1 (Activation)       (None, 28, 28, 240)  0           concatenate_2[0][0]
 57 __________________________________________________________________________________________________
 58 tf_op_layer_split_2 (TensorFlow [(None, 28, 28, 80), 0           activation_1[0][0]
 59 __________________________________________________________________________________________________
 60 conv2d_7 (Conv2D)               (None, 28, 28, 20)   1620        tf_op_layer_split_2[0][0]
 61 __________________________________________________________________________________________________
 62 conv2d_8 (Conv2D)               (None, 28, 28, 20)   1620        tf_op_layer_split_2[0][1]
 63 __________________________________________________________________________________________________
 64 conv2d_9 (Conv2D)               (None, 28, 28, 20)   1620        tf_op_layer_split_2[0][2]
 65 __________________________________________________________________________________________________
 66 concatenate_3 (Concatenate)     (None, 28, 28, 60)   0           conv2d_7[0][0]
 67                                                                  conv2d_8[0][0]
 68                                                                  conv2d_9[0][0]
 69 __________________________________________________________________________________________________
 70 batch_normalization_3 (BatchNor (None, 28, 28, 60)   240         concatenate_3[0][0]
 71 __________________________________________________________________________________________________
 72 activation_2 (Activation)       (None, 28, 28, 60)   0           batch_normalization_3[0][0]
 73 __________________________________________________________________________________________________
 74 tf_op_layer_Reshape_2 (TensorFl [(None, 28, 28, 3, 2 0           activation_2[0][0]
 75 __________________________________________________________________________________________________
 76 tf_op_layer_Transpose_1 (Tensor [(None, 28, 28, 20,  0           tf_op_layer_Reshape_2[0][0]
 77 __________________________________________________________________________________________________
 78 tf_op_layer_Reshape_3 (TensorFl [(None, 28, 28, 60)] 0           tf_op_layer_Transpose_1[0][0]
 79 __________________________________________________________________________________________________
 80 depthwise_conv2d_1 (DepthwiseCo (None, 28, 28, 60)   540         tf_op_layer_Reshape_3[0][0]
 81 __________________________________________________________________________________________________
 82 batch_normalization_4 (BatchNor (None, 28, 28, 60)   240         depthwise_conv2d_1[0][0]
 83 __________________________________________________________________________________________________
 84 tf_op_layer_split_3 (TensorFlow [(None, 28, 28, 20), 0           batch_normalization_4[0][0]
 85 __________________________________________________________________________________________________
 86 conv2d_10 (Conv2D)              (None, 28, 28, 80)   1680        tf_op_layer_split_3[0][0]
 87 __________________________________________________________________________________________________
 88 conv2d_11 (Conv2D)              (None, 28, 28, 80)   1680        tf_op_layer_split_3[0][1]
 89 __________________________________________________________________________________________________
 90 conv2d_12 (Conv2D)              (None, 28, 28, 80)   1680        tf_op_layer_split_3[0][2]
 91 __________________________________________________________________________________________________
 92 concatenate_4 (Concatenate)     (None, 28, 28, 240)  0           conv2d_10[0][0]
 93                                                                  conv2d_11[0][0]
 94                                                                  conv2d_12[0][0]
 95 __________________________________________________________________________________________________
 96 batch_normalization_5 (BatchNor (None, 28, 28, 240)  960         concatenate_4[0][0]
 97 __________________________________________________________________________________________________
 98 add (Add)                       (None, 28, 28, 240)  0           activation_1[0][0]
 99                                                                  batch_normalization_5[0][0]
100 __________________________________________________________________________________________________
101 activation_3 (Activation)       (None, 28, 28, 240)  0           add[0][0]
102 __________________________________________________________________________________________________
103 tf_op_layer_split_4 (TensorFlow [(None, 28, 28, 80), 0           activation_3[0][0]
104 __________________________________________________________________________________________________
105 conv2d_13 (Conv2D)              (None, 28, 28, 20)   1620        tf_op_layer_split_4[0][0]
106 __________________________________________________________________________________________________
107 conv2d_14 (Conv2D)              (None, 28, 28, 20)   1620        tf_op_layer_split_4[0][1]
108 __________________________________________________________________________________________________
109 conv2d_15 (Conv2D)              (None, 28, 28, 20)   1620        tf_op_layer_split_4[0][2]
110 __________________________________________________________________________________________________
111 concatenate_5 (Concatenate)     (None, 28, 28, 60)   0           conv2d_13[0][0]
112                                                                  conv2d_14[0][0]
113                                                                  conv2d_15[0][0]
114 __________________________________________________________________________________________________
115 batch_normalization_6 (BatchNor (None, 28, 28, 60)   240         concatenate_5[0][0]
116 __________________________________________________________________________________________________
117 activation_4 (Activation)       (None, 28, 28, 60)   0           batch_normalization_6[0][0]
118 __________________________________________________________________________________________________
119 tf_op_layer_Reshape_4 (TensorFl [(None, 28, 28, 3, 2 0           activation_4[0][0]
120 __________________________________________________________________________________________________
121 tf_op_layer_Transpose_2 (Tensor [(None, 28, 28, 20,  0           tf_op_layer_Reshape_4[0][0]
122 __________________________________________________________________________________________________
123 tf_op_layer_Reshape_5 (TensorFl [(None, 28, 28, 60)] 0           tf_op_layer_Transpose_2[0][0]
124 __________________________________________________________________________________________________
125 depthwise_conv2d_2 (DepthwiseCo (None, 28, 28, 60)   540         tf_op_layer_Reshape_5[0][0]
126 __________________________________________________________________________________________________
127 batch_normalization_7 (BatchNor (None, 28, 28, 60)   240         depthwise_conv2d_2[0][0]
128 __________________________________________________________________________________________________
129 tf_op_layer_split_5 (TensorFlow [(None, 28, 28, 20), 0           batch_normalization_7[0][0]
130 __________________________________________________________________________________________________
131 conv2d_16 (Conv2D)              (None, 28, 28, 80)   1680        tf_op_layer_split_5[0][0]
132 __________________________________________________________________________________________________
133 conv2d_17 (Conv2D)              (None, 28, 28, 80)   1680        tf_op_layer_split_5[0][1]
134 __________________________________________________________________________________________________
135 conv2d_18 (Conv2D)              (None, 28, 28, 80)   1680        tf_op_layer_split_5[0][2]
136 __________________________________________________________________________________________________
137 concatenate_6 (Concatenate)     (None, 28, 28, 240)  0           conv2d_16[0][0]
138                                                                  conv2d_17[0][0]
139                                                                  conv2d_18[0][0]
140 __________________________________________________________________________________________________
141 batch_normalization_8 (BatchNor (None, 28, 28, 240)  960         concatenate_6[0][0]
142 __________________________________________________________________________________________________
143 add_1 (Add)                     (None, 28, 28, 240)  0           activation_3[0][0]
144                                                                  batch_normalization_8[0][0]
145 __________________________________________________________________________________________________
146 activation_5 (Activation)       (None, 28, 28, 240)  0           add_1[0][0]
147 __________________________________________________________________________________________________
148 tf_op_layer_split_6 (TensorFlow [(None, 28, 28, 80), 0           activation_5[0][0]
149 __________________________________________________________________________________________________
150 conv2d_19 (Conv2D)              (None, 28, 28, 20)   1620        tf_op_layer_split_6[0][0]
151 __________________________________________________________________________________________________
152 conv2d_20 (Conv2D)              (None, 28, 28, 20)   1620        tf_op_layer_split_6[0][1]
153 __________________________________________________________________________________________________
154 conv2d_21 (Conv2D)              (None, 28, 28, 20)   1620        tf_op_layer_split_6[0][2]
155 __________________________________________________________________________________________________
156 concatenate_7 (Concatenate)     (None, 28, 28, 60)   0           conv2d_19[0][0]
157                                                                  conv2d_20[0][0]
158                                                                  conv2d_21[0][0]
159 __________________________________________________________________________________________________
160 batch_normalization_9 (BatchNor (None, 28, 28, 60)   240         concatenate_7[0][0]
161 __________________________________________________________________________________________________
162 activation_6 (Activation)       (None, 28, 28, 60)   0           batch_normalization_9[0][0]
163 __________________________________________________________________________________________________
164 tf_op_layer_Reshape_6 (TensorFl [(None, 28, 28, 3, 2 0           activation_6[0][0]
165 __________________________________________________________________________________________________
166 tf_op_layer_Transpose_3 (Tensor [(None, 28, 28, 20,  0           tf_op_layer_Reshape_6[0][0]
167 __________________________________________________________________________________________________
168 tf_op_layer_Reshape_7 (TensorFl [(None, 28, 28, 60)] 0           tf_op_layer_Transpose_3[0][0]
169 __________________________________________________________________________________________________
170 depthwise_conv2d_3 (DepthwiseCo (None, 28, 28, 60)   540         tf_op_layer_Reshape_7[0][0]
171 __________________________________________________________________________________________________
172 batch_normalization_10 (BatchNo (None, 28, 28, 60)   240         depthwise_conv2d_3[0][0]
173 __________________________________________________________________________________________________
174 tf_op_layer_split_7 (TensorFlow [(None, 28, 28, 20), 0           batch_normalization_10[0][0]
175 __________________________________________________________________________________________________
176 conv2d_22 (Conv2D)              (None, 28, 28, 80)   1680        tf_op_layer_split_7[0][0]
177 __________________________________________________________________________________________________
178 conv2d_23 (Conv2D)              (None, 28, 28, 80)   1680        tf_op_layer_split_7[0][1]
179 __________________________________________________________________________________________________
180 conv2d_24 (Conv2D)              (None, 28, 28, 80)   1680        tf_op_layer_split_7[0][2]
181 __________________________________________________________________________________________________
182 concatenate_8 (Concatenate)     (None, 28, 28, 240)  0           conv2d_22[0][0]
183                                                                  conv2d_23[0][0]
184                                                                  conv2d_24[0][0]
185 __________________________________________________________________________________________________
186 batch_normalization_11 (BatchNo (None, 28, 28, 240)  960         concatenate_8[0][0]
187 __________________________________________________________________________________________________
188 add_2 (Add)                     (None, 28, 28, 240)  0           activation_5[0][0]
189                                                                  batch_normalization_11[0][0]
190 __________________________________________________________________________________________________
191 activation_7 (Activation)       (None, 28, 28, 240)  0           add_2[0][0]
192 __________________________________________________________________________________________________
193 tf_op_layer_split_8 (TensorFlow [(None, 28, 28, 80), 0           activation_7[0][0]
194 __________________________________________________________________________________________________
195 conv2d_25 (Conv2D)              (None, 28, 28, 20)   1620        tf_op_layer_split_8[0][0]
196 __________________________________________________________________________________________________
197 conv2d_26 (Conv2D)              (None, 28, 28, 20)   1620        tf_op_layer_split_8[0][1]
198 __________________________________________________________________________________________________
199 conv2d_27 (Conv2D)              (None, 28, 28, 20)   1620        tf_op_layer_split_8[0][2]
200 __________________________________________________________________________________________________
201 concatenate_9 (Concatenate)     (None, 28, 28, 60)   0           conv2d_25[0][0]
202                                                                  conv2d_26[0][0]
203                                                                  conv2d_27[0][0]
204 __________________________________________________________________________________________________
205 batch_normalization_12 (BatchNo (None, 28, 28, 60)   240         concatenate_9[0][0]
206 __________________________________________________________________________________________________
207 activation_8 (Activation)       (None, 28, 28, 60)   0           batch_normalization_12[0][0]
208 __________________________________________________________________________________________________
209 tf_op_layer_Reshape_8 (TensorFl [(None, 28, 28, 3, 2 0           activation_8[0][0]
210 __________________________________________________________________________________________________
211 tf_op_layer_Transpose_4 (Tensor [(None, 28, 28, 20,  0           tf_op_layer_Reshape_8[0][0]
212 __________________________________________________________________________________________________
213 tf_op_layer_Reshape_9 (TensorFl [(None, 28, 28, 60)] 0           tf_op_layer_Transpose_4[0][0]
214 __________________________________________________________________________________________________
215 depthwise_conv2d_4 (DepthwiseCo (None, 14, 14, 60)   540         tf_op_layer_Reshape_9[0][0]
216 __________________________________________________________________________________________________
217 batch_normalization_13 (BatchNo (None, 14, 14, 60)   240         depthwise_conv2d_4[0][0]
218 __________________________________________________________________________________________________
219 tf_op_layer_split_9 (TensorFlow [(None, 14, 14, 20), 0           batch_normalization_13[0][0]
220 __________________________________________________________________________________________________
221 conv2d_28 (Conv2D)              (None, 14, 14, 80)   1680        tf_op_layer_split_9[0][0]
222 __________________________________________________________________________________________________
223 conv2d_29 (Conv2D)              (None, 14, 14, 80)   1680        tf_op_layer_split_9[0][1]
224 __________________________________________________________________________________________________
225 conv2d_30 (Conv2D)              (None, 14, 14, 80)   1680        tf_op_layer_split_9[0][2]
226 __________________________________________________________________________________________________
227 concatenate_10 (Concatenate)    (None, 14, 14, 240)  0           conv2d_28[0][0]
228                                                                  conv2d_29[0][0]
229                                                                  conv2d_30[0][0]
230 __________________________________________________________________________________________________
231 average_pooling2d_1 (AveragePoo (None, 14, 14, 240)  0           activation_7[0][0]
232 __________________________________________________________________________________________________
233 batch_normalization_14 (BatchNo (None, 14, 14, 240)  960         concatenate_10[0][0]
234 __________________________________________________________________________________________________
235 concatenate_11 (Concatenate)    (None, 14, 14, 480)  0           average_pooling2d_1[0][0]
236                                                                  batch_normalization_14[0][0]
237 __________________________________________________________________________________________________
238 activation_9 (Activation)       (None, 14, 14, 480)  0           concatenate_11[0][0]
239 __________________________________________________________________________________________________
240 tf_op_layer_split_10 (TensorFlo [(None, 14, 14, 160) 0           activation_9[0][0]
241 __________________________________________________________________________________________________
242 conv2d_31 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_10[0][0]
243 __________________________________________________________________________________________________
244 conv2d_32 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_10[0][1]
245 __________________________________________________________________________________________________
246 conv2d_33 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_10[0][2]
247 __________________________________________________________________________________________________
248 concatenate_12 (Concatenate)    (None, 14, 14, 120)  0           conv2d_31[0][0]
249                                                                  conv2d_32[0][0]
250                                                                  conv2d_33[0][0]
251 __________________________________________________________________________________________________
252 batch_normalization_15 (BatchNo (None, 14, 14, 120)  480         concatenate_12[0][0]
253 __________________________________________________________________________________________________
254 activation_10 (Activation)      (None, 14, 14, 120)  0           batch_normalization_15[0][0]
255 __________________________________________________________________________________________________
256 tf_op_layer_Reshape_10 (TensorF [(None, 14, 14, 3, 4 0           activation_10[0][0]
257 __________________________________________________________________________________________________
258 tf_op_layer_Transpose_5 (Tensor [(None, 14, 14, 40,  0           tf_op_layer_Reshape_10[0][0]
259 __________________________________________________________________________________________________
260 tf_op_layer_Reshape_11 (TensorF [(None, 14, 14, 120) 0           tf_op_layer_Transpose_5[0][0]
261 __________________________________________________________________________________________________
262 depthwise_conv2d_5 (DepthwiseCo (None, 14, 14, 120)  1080        tf_op_layer_Reshape_11[0][0]
263 __________________________________________________________________________________________________
264 batch_normalization_16 (BatchNo (None, 14, 14, 120)  480         depthwise_conv2d_5[0][0]
265 __________________________________________________________________________________________________
266 tf_op_layer_split_11 (TensorFlo [(None, 14, 14, 40), 0           batch_normalization_16[0][0]
267 __________________________________________________________________________________________________
268 conv2d_34 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_11[0][0]
269 __________________________________________________________________________________________________
270 conv2d_35 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_11[0][1]
271 __________________________________________________________________________________________________
272 conv2d_36 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_11[0][2]
273 __________________________________________________________________________________________________
274 concatenate_13 (Concatenate)    (None, 14, 14, 480)  0           conv2d_34[0][0]
275                                                                  conv2d_35[0][0]
276                                                                  conv2d_36[0][0]
277 __________________________________________________________________________________________________
278 batch_normalization_17 (BatchNo (None, 14, 14, 480)  1920        concatenate_13[0][0]
279 __________________________________________________________________________________________________
280 add_3 (Add)                     (None, 14, 14, 480)  0           activation_9[0][0]
281                                                                  batch_normalization_17[0][0]
282 __________________________________________________________________________________________________
283 activation_11 (Activation)      (None, 14, 14, 480)  0           add_3[0][0]
284 __________________________________________________________________________________________________
285 tf_op_layer_split_12 (TensorFlo [(None, 14, 14, 160) 0           activation_11[0][0]
286 __________________________________________________________________________________________________
287 conv2d_37 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_12[0][0]
288 __________________________________________________________________________________________________
289 conv2d_38 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_12[0][1]
290 __________________________________________________________________________________________________
291 conv2d_39 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_12[0][2]
292 __________________________________________________________________________________________________
293 concatenate_14 (Concatenate)    (None, 14, 14, 120)  0           conv2d_37[0][0]
294                                                                  conv2d_38[0][0]
295                                                                  conv2d_39[0][0]
296 __________________________________________________________________________________________________
297 batch_normalization_18 (BatchNo (None, 14, 14, 120)  480         concatenate_14[0][0]
298 __________________________________________________________________________________________________
299 activation_12 (Activation)      (None, 14, 14, 120)  0           batch_normalization_18[0][0]
300 __________________________________________________________________________________________________
301 tf_op_layer_Reshape_12 (TensorF [(None, 14, 14, 3, 4 0           activation_12[0][0]
302 __________________________________________________________________________________________________
303 tf_op_layer_Transpose_6 (Tensor [(None, 14, 14, 40,  0           tf_op_layer_Reshape_12[0][0]
304 __________________________________________________________________________________________________
305 tf_op_layer_Reshape_13 (TensorF [(None, 14, 14, 120) 0           tf_op_layer_Transpose_6[0][0]
306 __________________________________________________________________________________________________
307 depthwise_conv2d_6 (DepthwiseCo (None, 14, 14, 120)  1080        tf_op_layer_Reshape_13[0][0]
308 __________________________________________________________________________________________________
309 batch_normalization_19 (BatchNo (None, 14, 14, 120)  480         depthwise_conv2d_6[0][0]
310 __________________________________________________________________________________________________
311 tf_op_layer_split_13 (TensorFlo [(None, 14, 14, 40), 0           batch_normalization_19[0][0]
312 __________________________________________________________________________________________________
313 conv2d_40 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_13[0][0]
314 __________________________________________________________________________________________________
315 conv2d_41 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_13[0][1]
316 __________________________________________________________________________________________________
317 conv2d_42 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_13[0][2]
318 __________________________________________________________________________________________________
319 concatenate_15 (Concatenate)    (None, 14, 14, 480)  0           conv2d_40[0][0]
320                                                                  conv2d_41[0][0]
321                                                                  conv2d_42[0][0]
322 __________________________________________________________________________________________________
323 batch_normalization_20 (BatchNo (None, 14, 14, 480)  1920        concatenate_15[0][0]
324 __________________________________________________________________________________________________
325 add_4 (Add)                     (None, 14, 14, 480)  0           activation_11[0][0]
326                                                                  batch_normalization_20[0][0]
327 __________________________________________________________________________________________________
328 activation_13 (Activation)      (None, 14, 14, 480)  0           add_4[0][0]
329 __________________________________________________________________________________________________
330 tf_op_layer_split_14 (TensorFlo [(None, 14, 14, 160) 0           activation_13[0][0]
331 __________________________________________________________________________________________________
332 conv2d_43 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_14[0][0]
333 __________________________________________________________________________________________________
334 conv2d_44 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_14[0][1]
335 __________________________________________________________________________________________________
336 conv2d_45 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_14[0][2]
337 __________________________________________________________________________________________________
338 concatenate_16 (Concatenate)    (None, 14, 14, 120)  0           conv2d_43[0][0]
339                                                                  conv2d_44[0][0]
340                                                                  conv2d_45[0][0]
341 __________________________________________________________________________________________________
342 batch_normalization_21 (BatchNo (None, 14, 14, 120)  480         concatenate_16[0][0]
343 __________________________________________________________________________________________________
344 activation_14 (Activation)      (None, 14, 14, 120)  0           batch_normalization_21[0][0]
345 __________________________________________________________________________________________________
346 tf_op_layer_Reshape_14 (TensorF [(None, 14, 14, 3, 4 0           activation_14[0][0]
347 __________________________________________________________________________________________________
348 tf_op_layer_Transpose_7 (Tensor [(None, 14, 14, 40,  0           tf_op_layer_Reshape_14[0][0]
349 __________________________________________________________________________________________________
350 tf_op_layer_Reshape_15 (TensorF [(None, 14, 14, 120) 0           tf_op_layer_Transpose_7[0][0]
351 __________________________________________________________________________________________________
352 depthwise_conv2d_7 (DepthwiseCo (None, 14, 14, 120)  1080        tf_op_layer_Reshape_15[0][0]
353 __________________________________________________________________________________________________
354 batch_normalization_22 (BatchNo (None, 14, 14, 120)  480         depthwise_conv2d_7[0][0]
355 __________________________________________________________________________________________________
356 tf_op_layer_split_15 (TensorFlo [(None, 14, 14, 40), 0           batch_normalization_22[0][0]
357 __________________________________________________________________________________________________
358 conv2d_46 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_15[0][0]
359 __________________________________________________________________________________________________
360 conv2d_47 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_15[0][1]
361 __________________________________________________________________________________________________
362 conv2d_48 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_15[0][2]
363 __________________________________________________________________________________________________
364 concatenate_17 (Concatenate)    (None, 14, 14, 480)  0           conv2d_46[0][0]
365                                                                  conv2d_47[0][0]
366                                                                  conv2d_48[0][0]
367 __________________________________________________________________________________________________
368 batch_normalization_23 (BatchNo (None, 14, 14, 480)  1920        concatenate_17[0][0]
369 __________________________________________________________________________________________________
370 add_5 (Add)                     (None, 14, 14, 480)  0           activation_13[0][0]
371                                                                  batch_normalization_23[0][0]
372 __________________________________________________________________________________________________
373 activation_15 (Activation)      (None, 14, 14, 480)  0           add_5[0][0]
374 __________________________________________________________________________________________________
375 tf_op_layer_split_16 (TensorFlo [(None, 14, 14, 160) 0           activation_15[0][0]
376 __________________________________________________________________________________________________
377 conv2d_49 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_16[0][0]
378 __________________________________________________________________________________________________
379 conv2d_50 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_16[0][1]
380 __________________________________________________________________________________________________
381 conv2d_51 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_16[0][2]
382 __________________________________________________________________________________________________
383 concatenate_18 (Concatenate)    (None, 14, 14, 120)  0           conv2d_49[0][0]
384                                                                  conv2d_50[0][0]
385                                                                  conv2d_51[0][0]
386 __________________________________________________________________________________________________
387 batch_normalization_24 (BatchNo (None, 14, 14, 120)  480         concatenate_18[0][0]
388 __________________________________________________________________________________________________
389 activation_16 (Activation)      (None, 14, 14, 120)  0           batch_normalization_24[0][0]
390 __________________________________________________________________________________________________
391 tf_op_layer_Reshape_16 (TensorF [(None, 14, 14, 3, 4 0           activation_16[0][0]
392 __________________________________________________________________________________________________
393 tf_op_layer_Transpose_8 (Tensor [(None, 14, 14, 40,  0           tf_op_layer_Reshape_16[0][0]
394 __________________________________________________________________________________________________
395 tf_op_layer_Reshape_17 (TensorF [(None, 14, 14, 120) 0           tf_op_layer_Transpose_8[0][0]
396 __________________________________________________________________________________________________
397 depthwise_conv2d_8 (DepthwiseCo (None, 14, 14, 120)  1080        tf_op_layer_Reshape_17[0][0]
398 __________________________________________________________________________________________________
399 batch_normalization_25 (BatchNo (None, 14, 14, 120)  480         depthwise_conv2d_8[0][0]
400 __________________________________________________________________________________________________
401 tf_op_layer_split_17 (TensorFlo [(None, 14, 14, 40), 0           batch_normalization_25[0][0]
402 __________________________________________________________________________________________________
403 conv2d_52 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_17[0][0]
404 __________________________________________________________________________________________________
405 conv2d_53 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_17[0][1]
406 __________________________________________________________________________________________________
407 conv2d_54 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_17[0][2]
408 __________________________________________________________________________________________________
409 concatenate_19 (Concatenate)    (None, 14, 14, 480)  0           conv2d_52[0][0]
410                                                                  conv2d_53[0][0]
411                                                                  conv2d_54[0][0]
412 __________________________________________________________________________________________________
413 batch_normalization_26 (BatchNo (None, 14, 14, 480)  1920        concatenate_19[0][0]
414 __________________________________________________________________________________________________
415 add_6 (Add)                     (None, 14, 14, 480)  0           activation_15[0][0]
416                                                                  batch_normalization_26[0][0]
417 __________________________________________________________________________________________________
418 activation_17 (Activation)      (None, 14, 14, 480)  0           add_6[0][0]
419 __________________________________________________________________________________________________
420 tf_op_layer_split_18 (TensorFlo [(None, 14, 14, 160) 0           activation_17[0][0]
421 __________________________________________________________________________________________________
422 conv2d_55 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_18[0][0]
423 __________________________________________________________________________________________________
424 conv2d_56 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_18[0][1]
425 __________________________________________________________________________________________________
426 conv2d_57 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_18[0][2]
427 __________________________________________________________________________________________________
428 concatenate_20 (Concatenate)    (None, 14, 14, 120)  0           conv2d_55[0][0]
429                                                                  conv2d_56[0][0]
430                                                                  conv2d_57[0][0]
431 __________________________________________________________________________________________________
432 batch_normalization_27 (BatchNo (None, 14, 14, 120)  480         concatenate_20[0][0]
433 __________________________________________________________________________________________________
434 activation_18 (Activation)      (None, 14, 14, 120)  0           batch_normalization_27[0][0]
435 __________________________________________________________________________________________________
436 tf_op_layer_Reshape_18 (TensorF [(None, 14, 14, 3, 4 0           activation_18[0][0]
437 __________________________________________________________________________________________________
438 tf_op_layer_Transpose_9 (Tensor [(None, 14, 14, 40,  0           tf_op_layer_Reshape_18[0][0]
439 __________________________________________________________________________________________________
440 tf_op_layer_Reshape_19 (TensorF [(None, 14, 14, 120) 0           tf_op_layer_Transpose_9[0][0]
441 __________________________________________________________________________________________________
442 depthwise_conv2d_9 (DepthwiseCo (None, 14, 14, 120)  1080        tf_op_layer_Reshape_19[0][0]
443 __________________________________________________________________________________________________
444 batch_normalization_28 (BatchNo (None, 14, 14, 120)  480         depthwise_conv2d_9[0][0]
445 __________________________________________________________________________________________________
446 tf_op_layer_split_19 (TensorFlo [(None, 14, 14, 40), 0           batch_normalization_28[0][0]
447 __________________________________________________________________________________________________
448 conv2d_58 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_19[0][0]
449 __________________________________________________________________________________________________
450 conv2d_59 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_19[0][1]
451 __________________________________________________________________________________________________
452 conv2d_60 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_19[0][2]
453 __________________________________________________________________________________________________
454 concatenate_21 (Concatenate)    (None, 14, 14, 480)  0           conv2d_58[0][0]
455                                                                  conv2d_59[0][0]
456                                                                  conv2d_60[0][0]
457 __________________________________________________________________________________________________
458 batch_normalization_29 (BatchNo (None, 14, 14, 480)  1920        concatenate_21[0][0]
459 __________________________________________________________________________________________________
460 add_7 (Add)                     (None, 14, 14, 480)  0           activation_17[0][0]
461                                                                  batch_normalization_29[0][0]
462 __________________________________________________________________________________________________
463 activation_19 (Activation)      (None, 14, 14, 480)  0           add_7[0][0]
464 __________________________________________________________________________________________________
465 tf_op_layer_split_20 (TensorFlo [(None, 14, 14, 160) 0           activation_19[0][0]
466 __________________________________________________________________________________________________
467 conv2d_61 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_20[0][0]
468 __________________________________________________________________________________________________
469 conv2d_62 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_20[0][1]
470 __________________________________________________________________________________________________
471 conv2d_63 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_20[0][2]
472 __________________________________________________________________________________________________
473 concatenate_22 (Concatenate)    (None, 14, 14, 120)  0           conv2d_61[0][0]
474                                                                  conv2d_62[0][0]
475                                                                  conv2d_63[0][0]
476 __________________________________________________________________________________________________
477 batch_normalization_30 (BatchNo (None, 14, 14, 120)  480         concatenate_22[0][0]
478 __________________________________________________________________________________________________
479 activation_20 (Activation)      (None, 14, 14, 120)  0           batch_normalization_30[0][0]
480 __________________________________________________________________________________________________
481 tf_op_layer_Reshape_20 (TensorF [(None, 14, 14, 3, 4 0           activation_20[0][0]
482 __________________________________________________________________________________________________
483 tf_op_layer_Transpose_10 (Tenso [(None, 14, 14, 40,  0           tf_op_layer_Reshape_20[0][0]
484 __________________________________________________________________________________________________
485 tf_op_layer_Reshape_21 (TensorF [(None, 14, 14, 120) 0           tf_op_layer_Transpose_10[0][0]
486 __________________________________________________________________________________________________
487 depthwise_conv2d_10 (DepthwiseC (None, 14, 14, 120)  1080        tf_op_layer_Reshape_21[0][0]
488 __________________________________________________________________________________________________
489 batch_normalization_31 (BatchNo (None, 14, 14, 120)  480         depthwise_conv2d_10[0][0]
490 __________________________________________________________________________________________________
491 tf_op_layer_split_21 (TensorFlo [(None, 14, 14, 40), 0           batch_normalization_31[0][0]
492 __________________________________________________________________________________________________
493 conv2d_64 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_21[0][0]
494 __________________________________________________________________________________________________
495 conv2d_65 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_21[0][1]
496 __________________________________________________________________________________________________
497 conv2d_66 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_21[0][2]
498 __________________________________________________________________________________________________
499 concatenate_23 (Concatenate)    (None, 14, 14, 480)  0           conv2d_64[0][0]
500                                                                  conv2d_65[0][0]
501                                                                  conv2d_66[0][0]
502 __________________________________________________________________________________________________
503 batch_normalization_32 (BatchNo (None, 14, 14, 480)  1920        concatenate_23[0][0]
504 __________________________________________________________________________________________________
505 add_8 (Add)                     (None, 14, 14, 480)  0           activation_19[0][0]
506                                                                  batch_normalization_32[0][0]
507 __________________________________________________________________________________________________
508 activation_21 (Activation)      (None, 14, 14, 480)  0           add_8[0][0]
509 __________________________________________________________________________________________________
510 tf_op_layer_split_22 (TensorFlo [(None, 14, 14, 160) 0           activation_21[0][0]
511 __________________________________________________________________________________________________
512 conv2d_67 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_22[0][0]
513 __________________________________________________________________________________________________
514 conv2d_68 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_22[0][1]
515 __________________________________________________________________________________________________
516 conv2d_69 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_22[0][2]
517 __________________________________________________________________________________________________
518 concatenate_24 (Concatenate)    (None, 14, 14, 120)  0           conv2d_67[0][0]
519                                                                  conv2d_68[0][0]
520                                                                  conv2d_69[0][0]
521 __________________________________________________________________________________________________
522 batch_normalization_33 (BatchNo (None, 14, 14, 120)  480         concatenate_24[0][0]
523 __________________________________________________________________________________________________
524 activation_22 (Activation)      (None, 14, 14, 120)  0           batch_normalization_33[0][0]
525 __________________________________________________________________________________________________
526 tf_op_layer_Reshape_22 (TensorF [(None, 14, 14, 3, 4 0           activation_22[0][0]
527 __________________________________________________________________________________________________
528 tf_op_layer_Transpose_11 (Tenso [(None, 14, 14, 40,  0           tf_op_layer_Reshape_22[0][0]
529 __________________________________________________________________________________________________
530 tf_op_layer_Reshape_23 (TensorF [(None, 14, 14, 120) 0           tf_op_layer_Transpose_11[0][0]
531 __________________________________________________________________________________________________
532 depthwise_conv2d_11 (DepthwiseC (None, 14, 14, 120)  1080        tf_op_layer_Reshape_23[0][0]
533 __________________________________________________________________________________________________
534 batch_normalization_34 (BatchNo (None, 14, 14, 120)  480         depthwise_conv2d_11[0][0]
535 __________________________________________________________________________________________________
536 tf_op_layer_split_23 (TensorFlo [(None, 14, 14, 40), 0           batch_normalization_34[0][0]
537 __________________________________________________________________________________________________
538 conv2d_70 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_23[0][0]
539 __________________________________________________________________________________________________
540 conv2d_71 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_23[0][1]
541 __________________________________________________________________________________________________
542 conv2d_72 (Conv2D)              (None, 14, 14, 160)  6560        tf_op_layer_split_23[0][2]
543 __________________________________________________________________________________________________
544 concatenate_25 (Concatenate)    (None, 14, 14, 480)  0           conv2d_70[0][0]
545                                                                  conv2d_71[0][0]
546                                                                  conv2d_72[0][0]
547 __________________________________________________________________________________________________
548 batch_normalization_35 (BatchNo (None, 14, 14, 480)  1920        concatenate_25[0][0]
549 __________________________________________________________________________________________________
550 add_9 (Add)                     (None, 14, 14, 480)  0           activation_21[0][0]
551                                                                  batch_normalization_35[0][0]
552 __________________________________________________________________________________________________
553 activation_23 (Activation)      (None, 14, 14, 480)  0           add_9[0][0]
554 __________________________________________________________________________________________________
555 tf_op_layer_split_24 (TensorFlo [(None, 14, 14, 160) 0           activation_23[0][0]
556 __________________________________________________________________________________________________
557 conv2d_73 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_24[0][0]
558 __________________________________________________________________________________________________
559 conv2d_74 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_24[0][1]
560 __________________________________________________________________________________________________
561 conv2d_75 (Conv2D)              (None, 14, 14, 40)   6440        tf_op_layer_split_24[0][2]
562 __________________________________________________________________________________________________
563 concatenate_26 (Concatenate)    (None, 14, 14, 120)  0           conv2d_73[0][0]
564                                                                  conv2d_74[0][0]
565                                                                  conv2d_75[0][0]
566 __________________________________________________________________________________________________
567 batch_normalization_36 (BatchNo (None, 14, 14, 120)  480         concatenate_26[0][0]
568 __________________________________________________________________________________________________
569 activation_24 (Activation)      (None, 14, 14, 120)  0           batch_normalization_36[0][0]
570 __________________________________________________________________________________________________
571 tf_op_layer_Reshape_24 (TensorF [(None, 14, 14, 3, 4 0           activation_24[0][0]
572 __________________________________________________________________________________________________
573 tf_op_layer_Transpose_12 (Tenso [(None, 14, 14, 40,  0           tf_op_layer_Reshape_24[0][0]
574 __________________________________________________________________________________________________
575 tf_op_layer_Reshape_25 (TensorF [(None, 14, 14, 120) 0           tf_op_layer_Transpose_12[0][0]
576 __________________________________________________________________________________________________
577 depthwise_conv2d_12 (DepthwiseC (None, 7, 7, 120)    1080        tf_op_layer_Reshape_25[0][0]
578 __________________________________________________________________________________________________
579 batch_normalization_37 (BatchNo (None, 7, 7, 120)    480         depthwise_conv2d_12[0][0]
580 __________________________________________________________________________________________________
581 tf_op_layer_split_25 (TensorFlo [(None, 7, 7, 40), ( 0           batch_normalization_37[0][0]
582 __________________________________________________________________________________________________
583 conv2d_76 (Conv2D)              (None, 7, 7, 160)    6560        tf_op_layer_split_25[0][0]
584 __________________________________________________________________________________________________
585 conv2d_77 (Conv2D)              (None, 7, 7, 160)    6560        tf_op_layer_split_25[0][1]
586 __________________________________________________________________________________________________
587 conv2d_78 (Conv2D)              (None, 7, 7, 160)    6560        tf_op_layer_split_25[0][2]
588 __________________________________________________________________________________________________
589 concatenate_27 (Concatenate)    (None, 7, 7, 480)    0           conv2d_76[0][0]
590                                                                  conv2d_77[0][0]
591                                                                  conv2d_78[0][0]
592 __________________________________________________________________________________________________
593 average_pooling2d_2 (AveragePoo (None, 7, 7, 480)    0           activation_23[0][0]
594 __________________________________________________________________________________________________
595 batch_normalization_38 (BatchNo (None, 7, 7, 480)    1920        concatenate_27[0][0]
596 __________________________________________________________________________________________________
597 concatenate_28 (Concatenate)    (None, 7, 7, 960)    0           average_pooling2d_2[0][0]
598                                                                  batch_normalization_38[0][0]
599 __________________________________________________________________________________________________
600 activation_25 (Activation)      (None, 7, 7, 960)    0           concatenate_28[0][0]
601 __________________________________________________________________________________________________
602 tf_op_layer_split_26 (TensorFlo [(None, 7, 7, 320),  0           activation_25[0][0]
603 __________________________________________________________________________________________________
604 conv2d_79 (Conv2D)              (None, 7, 7, 80)     25680       tf_op_layer_split_26[0][0]
605 __________________________________________________________________________________________________
606 conv2d_80 (Conv2D)              (None, 7, 7, 80)     25680       tf_op_layer_split_26[0][1]
607 __________________________________________________________________________________________________
608 conv2d_81 (Conv2D)              (None, 7, 7, 80)     25680       tf_op_layer_split_26[0][2]
609 __________________________________________________________________________________________________
610 concatenate_29 (Concatenate)    (None, 7, 7, 240)    0           conv2d_79[0][0]
611                                                                  conv2d_80[0][0]
612                                                                  conv2d_81[0][0]
613 __________________________________________________________________________________________________
614 batch_normalization_39 (BatchNo (None, 7, 7, 240)    960         concatenate_29[0][0]
615 __________________________________________________________________________________________________
616 activation_26 (Activation)      (None, 7, 7, 240)    0           batch_normalization_39[0][0]
617 __________________________________________________________________________________________________
618 tf_op_layer_Reshape_26 (TensorF [(None, 7, 7, 3, 80) 0           activation_26[0][0]
619 __________________________________________________________________________________________________
620 tf_op_layer_Transpose_13 (Tenso [(None, 7, 7, 80, 3) 0           tf_op_layer_Reshape_26[0][0]
621 __________________________________________________________________________________________________
622 tf_op_layer_Reshape_27 (TensorF [(None, 7, 7, 240)]  0           tf_op_layer_Transpose_13[0][0]
623 __________________________________________________________________________________________________
624 depthwise_conv2d_13 (DepthwiseC (None, 7, 7, 240)    2160        tf_op_layer_Reshape_27[0][0]
625 __________________________________________________________________________________________________
626 batch_normalization_40 (BatchNo (None, 7, 7, 240)    960         depthwise_conv2d_13[0][0]
627 __________________________________________________________________________________________________
628 tf_op_layer_split_27 (TensorFlo [(None, 7, 7, 80), ( 0           batch_normalization_40[0][0]
629 __________________________________________________________________________________________________
630 conv2d_82 (Conv2D)              (None, 7, 7, 320)    25920       tf_op_layer_split_27[0][0]
631 __________________________________________________________________________________________________
632 conv2d_83 (Conv2D)              (None, 7, 7, 320)    25920       tf_op_layer_split_27[0][1]
633 __________________________________________________________________________________________________
634 conv2d_84 (Conv2D)              (None, 7, 7, 320)    25920       tf_op_layer_split_27[0][2]
635 __________________________________________________________________________________________________
636 concatenate_30 (Concatenate)    (None, 7, 7, 960)    0           conv2d_82[0][0]
637                                                                  conv2d_83[0][0]
638                                                                  conv2d_84[0][0]
639 __________________________________________________________________________________________________
640 batch_normalization_41 (BatchNo (None, 7, 7, 960)    3840        concatenate_30[0][0]
641 __________________________________________________________________________________________________
642 add_10 (Add)                    (None, 7, 7, 960)    0           activation_25[0][0]
643                                                                  batch_normalization_41[0][0]
644 __________________________________________________________________________________________________
645 activation_27 (Activation)      (None, 7, 7, 960)    0           add_10[0][0]
646 __________________________________________________________________________________________________
647 tf_op_layer_split_28 (TensorFlo [(None, 7, 7, 320),  0           activation_27[0][0]
648 __________________________________________________________________________________________________
649 conv2d_85 (Conv2D)              (None, 7, 7, 80)     25680       tf_op_layer_split_28[0][0]
650 __________________________________________________________________________________________________
651 conv2d_86 (Conv2D)              (None, 7, 7, 80)     25680       tf_op_layer_split_28[0][1]
652 __________________________________________________________________________________________________
653 conv2d_87 (Conv2D)              (None, 7, 7, 80)     25680       tf_op_layer_split_28[0][2]
654 __________________________________________________________________________________________________
655 concatenate_31 (Concatenate)    (None, 7, 7, 240)    0           conv2d_85[0][0]
656                                                                  conv2d_86[0][0]
657                                                                  conv2d_87[0][0]
658 __________________________________________________________________________________________________
659 batch_normalization_42 (BatchNo (None, 7, 7, 240)    960         concatenate_31[0][0]
660 __________________________________________________________________________________________________
661 activation_28 (Activation)      (None, 7, 7, 240)    0           batch_normalization_42[0][0]
662 __________________________________________________________________________________________________
663 tf_op_layer_Reshape_28 (TensorF [(None, 7, 7, 3, 80) 0           activation_28[0][0]
664 __________________________________________________________________________________________________
665 tf_op_layer_Transpose_14 (Tenso [(None, 7, 7, 80, 3) 0           tf_op_layer_Reshape_28[0][0]
666 __________________________________________________________________________________________________
667 tf_op_layer_Reshape_29 (TensorF [(None, 7, 7, 240)]  0           tf_op_layer_Transpose_14[0][0]
668 __________________________________________________________________________________________________
669 depthwise_conv2d_14 (DepthwiseC (None, 7, 7, 240)    2160        tf_op_layer_Reshape_29[0][0]
670 __________________________________________________________________________________________________
671 batch_normalization_43 (BatchNo (None, 7, 7, 240)    960         depthwise_conv2d_14[0][0]
672 __________________________________________________________________________________________________
673 tf_op_layer_split_29 (TensorFlo [(None, 7, 7, 80), ( 0           batch_normalization_43[0][0]
674 __________________________________________________________________________________________________
675 conv2d_88 (Conv2D)              (None, 7, 7, 320)    25920       tf_op_layer_split_29[0][0]
676 __________________________________________________________________________________________________
677 conv2d_89 (Conv2D)              (None, 7, 7, 320)    25920       tf_op_layer_split_29[0][1]
678 __________________________________________________________________________________________________
679 conv2d_90 (Conv2D)              (None, 7, 7, 320)    25920       tf_op_layer_split_29[0][2]
680 __________________________________________________________________________________________________
681 concatenate_32 (Concatenate)    (None, 7, 7, 960)    0           conv2d_88[0][0]
682                                                                  conv2d_89[0][0]
683                                                                  conv2d_90[0][0]
684 __________________________________________________________________________________________________
685 batch_normalization_44 (BatchNo (None, 7, 7, 960)    3840        concatenate_32[0][0]
686 __________________________________________________________________________________________________
687 add_11 (Add)                    (None, 7, 7, 960)    0           activation_27[0][0]
688                                                                  batch_normalization_44[0][0]
689 __________________________________________________________________________________________________
690 activation_29 (Activation)      (None, 7, 7, 960)    0           add_11[0][0]
691 __________________________________________________________________________________________________
692 tf_op_layer_split_30 (TensorFlo [(None, 7, 7, 320),  0           activation_29[0][0]
693 __________________________________________________________________________________________________
694 conv2d_91 (Conv2D)              (None, 7, 7, 80)     25680       tf_op_layer_split_30[0][0]
695 __________________________________________________________________________________________________
696 conv2d_92 (Conv2D)              (None, 7, 7, 80)     25680       tf_op_layer_split_30[0][1]
697 __________________________________________________________________________________________________
698 conv2d_93 (Conv2D)              (None, 7, 7, 80)     25680       tf_op_layer_split_30[0][2]
699 __________________________________________________________________________________________________
700 concatenate_33 (Concatenate)    (None, 7, 7, 240)    0           conv2d_91[0][0]
701                                                                  conv2d_92[0][0]
702                                                                  conv2d_93[0][0]
703 __________________________________________________________________________________________________
704 batch_normalization_45 (BatchNo (None, 7, 7, 240)    960         concatenate_33[0][0]
705 __________________________________________________________________________________________________
706 activation_30 (Activation)      (None, 7, 7, 240)    0           batch_normalization_45[0][0]
707 __________________________________________________________________________________________________
708 tf_op_layer_Reshape_30 (TensorF [(None, 7, 7, 3, 80) 0           activation_30[0][0]
709 __________________________________________________________________________________________________
710 tf_op_layer_Transpose_15 (Tenso [(None, 7, 7, 80, 3) 0           tf_op_layer_Reshape_30[0][0]
711 __________________________________________________________________________________________________
712 tf_op_layer_Reshape_31 (TensorF [(None, 7, 7, 240)]  0           tf_op_layer_Transpose_15[0][0]
713 __________________________________________________________________________________________________
714 depthwise_conv2d_15 (DepthwiseC (None, 7, 7, 240)    2160        tf_op_layer_Reshape_31[0][0]
715 __________________________________________________________________________________________________
716 batch_normalization_46 (BatchNo (None, 7, 7, 240)    960         depthwise_conv2d_15[0][0]
717 __________________________________________________________________________________________________
718 tf_op_layer_split_31 (TensorFlo [(None, 7, 7, 80), ( 0           batch_normalization_46[0][0]
719 __________________________________________________________________________________________________
720 conv2d_94 (Conv2D)              (None, 7, 7, 320)    25920       tf_op_layer_split_31[0][0]
721 __________________________________________________________________________________________________
722 conv2d_95 (Conv2D)              (None, 7, 7, 320)    25920       tf_op_layer_split_31[0][1]
723 __________________________________________________________________________________________________
724 conv2d_96 (Conv2D)              (None, 7, 7, 320)    25920       tf_op_layer_split_31[0][2]
725 __________________________________________________________________________________________________
726 concatenate_34 (Concatenate)    (None, 7, 7, 960)    0           conv2d_94[0][0]
727                                                                  conv2d_95[0][0]
728                                                                  conv2d_96[0][0]
729 __________________________________________________________________________________________________
730 batch_normalization_47 (BatchNo (None, 7, 7, 960)    3840        concatenate_34[0][0]
731 __________________________________________________________________________________________________
732 add_12 (Add)                    (None, 7, 7, 960)    0           activation_29[0][0]
733                                                                  batch_normalization_47[0][0]
734 __________________________________________________________________________________________________
735 activation_31 (Activation)      (None, 7, 7, 960)    0           add_12[0][0]
736 __________________________________________________________________________________________________
737 global_average_pooling2d (Globa (None, 960)          0           activation_31[0][0]
738 __________________________________________________________________________________________________
739 dense (Dense)                   (None, 17)           16337       global_average_pooling2d[0][0]
740 ==================================================================================================
741 Total params: 902,741
742 Trainable params: 879,053
743 Non-trainable params: 23,688
View Code

資料增強

 1 # 訓練集資料進行資料增強
 2 train_datagen = ImageDataGenerator(
 3     rotation_range=20,  # 隨機旋轉度數
 4     width_shift_range=0.1,  # 隨機水平平移
 5     height_shift_range=0.1,  # 隨機豎直平移
 6     rescale=1 / 255,  # 資料歸一化
 7     shear_range=10,  # 隨機錯切變換
 8     zoom_range=0.1,  # 隨機放大
 9     horizontal_flip=True,  # 水平翻轉
10     brightness_range=(0.7, 1.3),  # 亮度變化
11     fill_mode='nearest',  # 填充方式
12 )
13 # 測驗集資料只需要歸一化就可以
14 test_datagen = ImageDataGenerator(
15     rescale=1 / 255,  # 資料歸一化
16 )

資料生成器

 1 # 訓練集資料生成器,可以在訓練時自動產生資料進行訓練
 2 # 從'data/train'獲得訓練集資料
 3 # 獲得資料后會把圖片resize為image_size×image_size的大小
 4 # generator每次會產生batch_size個資料
 5 train_generator = train_datagen.flow_from_directory(
 6     '../data/train',
 7     target_size=(image_size, image_size),
 8     batch_size=batch_size,
 9 )
10 
11 # 測驗集資料生成器
12 test_generator = test_datagen.flow_from_directory(
13     '../data/test',
14     target_size=(image_size, image_size),
15     batch_size=batch_size,
16 )
17 # 字典的鍵為17個檔案夾的名字,值為對應的分類編號
18 print(train_generator.class_indices)

 

 

 回呼設定

 1 # 學習率調節函式,逐漸減小學習率
 2 def adjust_learning_rate(epoch):
 3     # 前40周期
 4     if epoch<=40:
 5         lr = 1e-4
 6     # 前40到80周期
 7     elif epoch>40 and epoch<=80:
 8         lr = 1e-5
 9     # 80到100周期
10     else:
11         lr = 1e-6
12     return lr
13 
14 # 定義優化器
15 adam = Adam(lr=1e-4)
16 
17 # 讀取模型
18 checkpoint_save_path = "./checkpoint/ShuffleNetV1.ckpt"
19 if os.path.exists(checkpoint_save_path + '.index'):
20     print('-------------load the model-----------------')
21     model.load_weights(checkpoint_save_path)
22 # 保存模型
23 cp_callback = tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_save_path,
24                                                  save_weights_only=True,
25                                                  save_best_only=True)
26 
27 # 定義學習率衰減策略
28 callbacks = []
29 callbacks.append(LearningRateScheduler(adjust_learning_rate))
30 callbacks.append(cp_callback)
1 # 定義優化器,loss function,訓練程序中計算準確率
2 model.compile(optimizer=adam,loss='categorical_crossentropy',metrics=['accuracy'])
3 
4 # Tensorflow2.1版本(包括2.1)之后可以直接使用fit訓練模型
5 history = model.fit(x=train_generator,epochs=epochs,validation_data=https://www.cnblogs.com/wsfbb/archive/2022/10/12/test_generator,callbacks=callbacks)

 

  1 Epoch 1/100
  2 34/34 [==============================] - 18s 526ms/step - loss: 2.9157 - accuracy: 0.1544 - val_loss: 2.8353 - val_accuracy: 0.0588
  3 Epoch 2/100
  4 34/34 [==============================] - 16s 478ms/step - loss: 2.2678 - accuracy: 0.2822 - val_loss: 2.8387 - val_accuracy: 0.0588
  5 Epoch 3/100
  6 34/34 [==============================] - 16s 483ms/step - loss: 1.9987 - accuracy: 0.3778 - val_loss: 2.8482 - val_accuracy: 0.0588
  7 Epoch 4/100
  8 34/34 [==============================] - 16s 481ms/step - loss: 1.8269 - accuracy: 0.4200 - val_loss: 2.8607 - val_accuracy: 0.0625
  9 Epoch 5/100
 10 34/34 [==============================] - 17s 487ms/step - loss: 1.7022 - accuracy: 0.4651 - val_loss: 2.8800 - val_accuracy: 0.0588
 11 Epoch 6/100
 12 34/34 [==============================] - 16s 479ms/step - loss: 1.5436 - accuracy: 0.5138 - val_loss: 2.9101 - val_accuracy: 0.0588
 13 Epoch 7/100
 14 34/34 [==============================] - 16s 484ms/step - loss: 1.4806 - accuracy: 0.5221 - val_loss: 2.9455 - val_accuracy: 0.0588
 15 Epoch 8/100
 16 34/34 [==============================] - 17s 486ms/step - loss: 1.3658 - accuracy: 0.5699 - val_loss: 3.0113 - val_accuracy: 0.0588
 17 Epoch 9/100
 18 34/34 [==============================] - 16s 478ms/step - loss: 1.3244 - accuracy: 0.5772 - val_loss: 3.0792 - val_accuracy: 0.0588
 19 Epoch 10/100
 20 34/34 [==============================] - 16s 480ms/step - loss: 1.2401 - accuracy: 0.6029 - val_loss: 3.2077 - val_accuracy: 0.0588
 21 Epoch 11/100
 22 34/34 [==============================] - 16s 480ms/step - loss: 1.1940 - accuracy: 0.6048 - val_loss: 3.3061 - val_accuracy: 0.0588
 23 Epoch 12/100
 24 34/34 [==============================] - 16s 480ms/step - loss: 1.1689 - accuracy: 0.6213 - val_loss: 3.4508 - val_accuracy: 0.0772
 25 Epoch 13/100
 26 34/34 [==============================] - 16s 481ms/step - loss: 1.1282 - accuracy: 0.6241 - val_loss: 3.5842 - val_accuracy: 0.0919
 27 Epoch 14/100
 28 34/34 [==============================] - 16s 479ms/step - loss: 1.0759 - accuracy: 0.6572 - val_loss: 3.5697 - val_accuracy: 0.1140
 29 Epoch 15/100
 30 34/34 [==============================] - 17s 488ms/step - loss: 1.0264 - accuracy: 0.6618 - val_loss: 3.6231 - val_accuracy: 0.1176
 31 Epoch 16/100
 32 34/34 [==============================] - 16s 475ms/step - loss: 1.0210 - accuracy: 0.6719 - val_loss: 3.3065 - val_accuracy: 0.1471
 33 Epoch 17/100
 34 34/34 [==============================] - 16s 477ms/step - loss: 0.9543 - accuracy: 0.6939 - val_loss: 2.9929 - val_accuracy: 0.2169
 35 Epoch 18/100
 36 34/34 [==============================] - 17s 493ms/step - loss: 0.9405 - accuracy: 0.6939 - val_loss: 2.3133 - val_accuracy: 0.2941
 37 Epoch 19/100
 38 34/34 [==============================] - 17s 488ms/step - loss: 0.9069 - accuracy: 0.7031 - val_loss: 1.8180 - val_accuracy: 0.4081
 39 Epoch 20/100
 40 34/34 [==============================] - 17s 491ms/step - loss: 0.8797 - accuracy: 0.7050 - val_loss: 1.7820 - val_accuracy: 0.4926
 41 Epoch 21/100
 42 34/34 [==============================] - 17s 493ms/step - loss: 0.8911 - accuracy: 0.7215 - val_loss: 1.4993 - val_accuracy: 0.5625
 43 Epoch 22/100
 44 34/34 [==============================] - 17s 496ms/step - loss: 0.8480 - accuracy: 0.7215 - val_loss: 1.4438 - val_accuracy: 0.5699
 45 Epoch 23/100
 46 34/34 [==============================] - 17s 496ms/step - loss: 0.7861 - accuracy: 0.7472 - val_loss: 1.2822 - val_accuracy: 0.6103
 47 Epoch 24/100
 48 34/34 [==============================] - 16s 477ms/step - loss: 0.8111 - accuracy: 0.7307 - val_loss: 1.7404 - val_accuracy: 0.5404
 49 Epoch 25/100
 50 34/34 [==============================] - 16s 477ms/step - loss: 0.7855 - accuracy: 0.7316 - val_loss: 1.4184 - val_accuracy: 0.6287
 51 Epoch 26/100
 52 34/34 [==============================] - 17s 491ms/step - loss: 0.7679 - accuracy: 0.7555 - val_loss: 1.2750 - val_accuracy: 0.6213
 53 Epoch 27/100
 54 34/34 [==============================] - 16s 481ms/step - loss: 0.7451 - accuracy: 0.7454 - val_loss: 1.4109 - val_accuracy: 0.5882
 55 Epoch 28/100
 56 34/34 [==============================] - 16s 482ms/step - loss: 0.7201 - accuracy: 0.7408 - val_loss: 1.3238 - val_accuracy: 0.6507
 57 Epoch 29/100
 58 34/34 [==============================] - 16s 475ms/step - loss: 0.7238 - accuracy: 0.7629 - val_loss: 1.2997 - val_accuracy: 0.6360
 59 Epoch 30/100
 60 34/34 [==============================] - 16s 482ms/step - loss: 0.6587 - accuracy: 0.7849 - val_loss: 1.2941 - val_accuracy: 0.6471
 61 Epoch 31/100
 62 34/34 [==============================] - 17s 488ms/step - loss: 0.6508 - accuracy: 0.7858 - val_loss: 1.4063 - val_accuracy: 0.6397
 63 Epoch 32/100
 64 34/34 [==============================] - 17s 495ms/step - loss: 0.6294 - accuracy: 0.8006 - val_loss: 1.1997 - val_accuracy: 0.6691
 65 Epoch 33/100
 66 34/34 [==============================] - 16s 482ms/step - loss: 0.6579 - accuracy: 0.7665 - val_loss: 1.2146 - val_accuracy: 0.6434
 67 Epoch 34/100
 68 34/34 [==============================] - 16s 481ms/step - loss: 0.6207 - accuracy: 0.7941 - val_loss: 1.3010 - val_accuracy: 0.6360
 69 Epoch 35/100
 70 34/34 [==============================] - 16s 480ms/step - loss: 0.5873 - accuracy: 0.8033 - val_loss: 1.2448 - val_accuracy: 0.6618
 71 Epoch 36/100
 72 34/34 [==============================] - 16s 477ms/step - loss: 0.5755 - accuracy: 0.7941 - val_loss: 1.2584 - val_accuracy: 0.6434
 73 Epoch 37/100
 74 34/34 [==============================] - 17s 491ms/step - loss: 0.5668 - accuracy: 0.8189 - val_loss: 1.1914 - val_accuracy: 0.6728
 75 Epoch 38/100
 76 34/34 [==============================] - 16s 485ms/step - loss: 0.5527 - accuracy: 0.8107 - val_loss: 1.2917 - val_accuracy: 0.6434
 77 Epoch 39/100
 78 34/34 [==============================] - 16s 475ms/step - loss: 0.5715 - accuracy: 0.8088 - val_loss: 1.2613 - val_accuracy: 0.6581
 79 Epoch 40/100
 80 34/34 [==============================] - 16s 477ms/step - loss: 0.5286 - accuracy: 0.8272 - val_loss: 1.2632 - val_accuracy: 0.6581
 81 Epoch 41/100
 82 34/34 [==============================] - 17s 495ms/step - loss: 0.5098 - accuracy: 0.8327 - val_loss: 1.1116 - val_accuracy: 0.6985
 83 Epoch 42/100
 84 34/34 [==============================] - 17s 493ms/step - loss: 0.4543 - accuracy: 0.8428 - val_loss: 1.0116 - val_accuracy: 0.7206
 85 Epoch 43/100
 86 34/34 [==============================] - 17s 492ms/step - loss: 0.4145 - accuracy: 0.8695 - val_loss: 0.9978 - val_accuracy: 0.7206
 87 Epoch 44/100
 88 34/34 [==============================] - 17s 489ms/step - loss: 0.4421 - accuracy: 0.8612 - val_loss: 0.9956 - val_accuracy: 0.7169
 89 Epoch 45/100
 90 34/34 [==============================] - 17s 486ms/step - loss: 0.4015 - accuracy: 0.8750 - val_loss: 0.9964 - val_accuracy: 0.7206
 91 Epoch 46/100
 92 34/34 [==============================] - 16s 476ms/step - loss: 0.3937 - accuracy: 0.8805 - val_loss: 1.0131 - val_accuracy: 0.7279
 93 Epoch 47/100
 94 34/34 [==============================] - 16s 477ms/step - loss: 0.4492 - accuracy: 0.8539 - val_loss: 1.0172 - val_accuracy: 0.7243
 95 Epoch 48/100
 96 34/34 [==============================] - 16s 483ms/step - loss: 0.4238 - accuracy: 0.8649 - val_loss: 1.0143 - val_accuracy: 0.7279
 97 Epoch 49/100
 98 34/34 [==============================] - 16s 480ms/step - loss: 0.4192 - accuracy: 0.8658 - val_loss: 1.0148 - val_accuracy: 0.7206
 99 Epoch 50/100
100 34/34 [==============================] - 16s 479ms/step - loss: 0.4071 - accuracy: 0.8695 - val_loss: 1.0148 - val_accuracy: 0.7316
101 Epoch 51/100
102 34/34 [==============================] - 16s 483ms/step - loss: 0.4115 - accuracy: 0.8557 - val_loss: 1.0180 - val_accuracy: 0.7463
103 Epoch 52/100
104 34/34 [==============================] - 16s 480ms/step - loss: 0.4106 - accuracy: 0.8704 - val_loss: 1.0214 - val_accuracy: 0.7353
105 Epoch 53/100
106 34/34 [==============================] - 16s 477ms/step - loss: 0.4026 - accuracy: 0.8713 - val_loss: 1.0171 - val_accuracy: 0.7390
107 Epoch 54/100
108 34/34 [==============================] - 16s 476ms/step - loss: 0.4073 - accuracy: 0.8750 - val_loss: 1.0067 - val_accuracy: 0.7426
109 Epoch 55/100
110 34/34 [==============================] - 16s 485ms/step - loss: 0.3608 - accuracy: 0.8842 - val_loss: 1.0039 - val_accuracy: 0.7500
111 Epoch 56/100
112 34/34 [==============================] - 16s 478ms/step - loss: 0.4101 - accuracy: 0.8658 - val_loss: 1.0056 - val_accuracy: 0.7426
113 Epoch 57/100
114 34/34 [==============================] - 16s 478ms/step - loss: 0.3797 - accuracy: 0.8787 - val_loss: 0.9983 - val_accuracy: 0.7426
115 Epoch 58/100
116 34/34 [==============================] - 16s 484ms/step - loss: 0.4077 - accuracy: 0.8695 - val_loss: 1.0055 - val_accuracy: 0.7390
117 Epoch 59/100
118 34/34 [==============================] - 16s 474ms/step - loss: 0.4265 - accuracy: 0.8649 - val_loss: 1.0111 - val_accuracy: 0.7500
119 Epoch 60/100
120 34/34 [==============================] - 17s 492ms/step - loss: 0.3475 - accuracy: 0.8961 - val_loss: 0.9925 - val_accuracy: 0.7500
121 Epoch 61/100
122 34/34 [==============================] - 17s 497ms/step - loss: 0.3883 - accuracy: 0.8796 - val_loss: 0.9693 - val_accuracy: 0.7390
123 Epoch 62/100
124 34/34 [==============================] - 17s 494ms/step - loss: 0.3615 - accuracy: 0.8934 - val_loss: 0.9608 - val_accuracy: 0.7463
125 Epoch 63/100
126 34/34 [==============================] - 16s 480ms/step - loss: 0.4017 - accuracy: 0.8695 - val_loss: 0.9706 - val_accuracy: 0.7610
127 Epoch 64/100
128 34/34 [==============================] - 17s 495ms/step - loss: 0.3727 - accuracy: 0.8851 - val_loss: 0.9587 - val_accuracy: 0.7574
129 Epoch 65/100
130 34/34 [==============================] - 16s 480ms/step - loss: 0.4053 - accuracy: 0.8750 - val_loss: 0.9707 - val_accuracy: 0.7390
131 Epoch 66/100
132 34/34 [==============================] - 16s 481ms/step - loss: 0.3722 - accuracy: 0.8860 - val_loss: 0.9836 - val_accuracy: 0.7426
133 Epoch 67/100
134 34/34 [==============================] - 16s 477ms/step - loss: 0.3841 - accuracy: 0.8824 - val_loss: 0.9597 - val_accuracy: 0.7426
135 Epoch 68/100
136 34/34 [==============================] - 16s 480ms/step - loss: 0.4085 - accuracy: 0.8621 - val_loss: 0.9813 - val_accuracy: 0.7390
137 Epoch 69/100
138 34/34 [==============================] - 16s 479ms/step - loss: 0.3578 - accuracy: 0.8943 - val_loss: 0.9673 - val_accuracy: 0.7463
139 Epoch 70/100
140 34/34 [==============================] - 16s 478ms/step - loss: 0.3628 - accuracy: 0.8915 - val_loss: 0.9789 - val_accuracy: 0.7353
141 Epoch 71/100
142 34/34 [==============================] - 17s 486ms/step - loss: 0.3904 - accuracy: 0.8686 - val_loss: 0.9738 - val_accuracy: 0.7537
143 Epoch 72/100
144 34/34 [==============================] - 16s 484ms/step - loss: 0.3585 - accuracy: 0.8943 - val_loss: 0.9827 - val_accuracy: 0.7574
145 Epoch 73/100
146 34/34 [==============================] - 16s 479ms/step - loss: 0.3593 - accuracy: 0.8879 - val_loss: 0.9722 - val_accuracy: 0.7574
147 Epoch 74/100
148 34/34 [==============================] - 16s 481ms/step - loss: 0.3636 - accuracy: 0.8869 - val_loss: 0.9719 - val_accuracy: 0.7500
149 Epoch 75/100
150 34/34 [==============================] - 16s 479ms/step - loss: 0.3776 - accuracy: 0.8787 - val_loss: 0.9690 - val_accuracy: 0.7500
151 Epoch 76/100
152 34/34 [==============================] - 17s 490ms/step - loss: 0.3815 - accuracy: 0.8768 - val_loss: 0.9569 - val_accuracy: 0.7574
153 Epoch 77/100
154 34/34 [==============================] - 16s 480ms/step - loss: 0.3608 - accuracy: 0.8833 - val_loss: 0.9737 - val_accuracy: 0.7537
155 Epoch 78/100
156 34/34 [==============================] - 17s 496ms/step - loss: 0.3801 - accuracy: 0.8722 - val_loss: 0.9393 - val_accuracy: 0.7610
157 Epoch 79/100
158 34/34 [==============================] - 16s 478ms/step - loss: 0.3385 - accuracy: 0.8943 - val_loss: 0.9577 - val_accuracy: 0.7500
159 Epoch 80/100
160 34/34 [==============================] - 16s 477ms/step - loss: 0.3565 - accuracy: 0.8869 - val_loss: 0.9693 - val_accuracy: 0.7537
161 Epoch 81/100
162 34/34 [==============================] - 16s 482ms/step - loss: 0.3614 - accuracy: 0.8961 - val_loss: 0.9911 - val_accuracy: 0.7574
163 Epoch 82/100
164 34/34 [==============================] - 16s 478ms/step - loss: 0.3581 - accuracy: 0.8814 - val_loss: 0.9848 - val_accuracy: 0.7574
165 Epoch 83/100
166 34/34 [==============================] - 16s 479ms/step - loss: 0.3880 - accuracy: 0.8833 - val_loss: 0.9779 - val_accuracy: 0.7574
167 Epoch 84/100
168 34/34 [==============================] - 16s 478ms/step - loss: 0.3549 - accuracy: 0.8851 - val_loss: 0.9744 - val_accuracy: 0.7537
169 Epoch 85/100
170 34/34 [==============================] - 17s 487ms/step - loss: 0.3552 - accuracy: 0.8934 - val_loss: 0.9736 - val_accuracy: 0.7537
171 Epoch 86/100
172 34/34 [==============================] - 16s 483ms/step - loss: 0.3681 - accuracy: 0.8842 - val_loss: 0.9715 - val_accuracy: 0.7537
173 Epoch 87/100
174 34/34 [==============================] - 16s 479ms/step - loss: 0.3416 - accuracy: 0.8934 - val_loss: 0.9662 - val_accuracy: 0.7537
175 Epoch 88/100
176 34/34 [==============================] - 17s 486ms/step - loss: 0.3562 - accuracy: 0.8934 - val_loss: 0.9662 - val_accuracy: 0.7537
177 Epoch 89/100
178 34/34 [==============================] - 17s 485ms/step - loss: 0.3682 - accuracy: 0.8851 - val_loss: 0.9636 - val_accuracy: 0.7500
179 Epoch 90/100
180 34/34 [==============================] - 16s 480ms/step - loss: 0.3739 - accuracy: 0.8787 - val_loss: 0.9614 - val_accuracy: 0.7500
181 Epoch 91/100
182 34/34 [==============================] - 16s 483ms/step - loss: 0.3442 - accuracy: 0.8943 - val_loss: 0.9631 - val_accuracy: 0.7500
183 Epoch 92/100
184 34/34 [==============================] - 16s 478ms/step - loss: 0.3598 - accuracy: 0.8915 - val_loss: 0.9624 - val_accuracy: 0.7500
185 Epoch 93/100
186 34/34 [==============================] - 16s 474ms/step - loss: 0.3845 - accuracy: 0.8778 - val_loss: 0.9641 - val_accuracy: 0.7500
187 Epoch 94/100
188 34/34 [==============================] - 16s 478ms/step - loss: 0.3526 - accuracy: 0.8915 - val_loss: 0.9655 - val_accuracy: 0.7574
189 Epoch 95/100
190 34/34 [==============================] - 16s 477ms/step - loss: 0.3581 - accuracy: 0.8869 - val_loss: 0.9652 - val_accuracy: 0.7574
191 Epoch 96/100
192 34/34 [==============================] - 16s 477ms/step - loss: 0.3392 - accuracy: 0.8897 - val_loss: 0.9608 - val_accuracy: 0.7537
193 Epoch 97/100
194 34/34 [==============================] - 16s 478ms/step - loss: 0.3525 - accuracy: 0.8943 - val_loss: 0.9628 - val_accuracy: 0.7537
195 Epoch 98/100
196 34/34 [==============================] - 16s 480ms/step - loss: 0.3532 - accuracy: 0.8943 - val_loss: 0.9632 - val_accuracy: 0.7537
197 Epoch 99/100
198 34/34 [==============================] - 16s 479ms/step - loss: 0.3759 - accuracy: 0.8851 - val_loss: 0.9571 - val_accuracy: 0.7574
199 Epoch 100/100
200 34/34 [==============================] - 16s 476ms/step - loss: 0.3292 - accuracy: 0.8971 - val_loss: 0.9545 - val_accuracy: 0.7537
View Code

 

沒有預訓練的權重,訓練出來的結果肯定不是特別好,但是還算能接受吧,

可視化

 1 # 畫出訓練集準確率曲線圖
 2 plt.plot(np.arange(epochs),history.history['accuracy'],c='b',label='train_accuracy')
 3 # 畫出驗證集準確率曲線圖
 4 plt.plot(np.arange(epochs),history.history['val_accuracy'],c='y',label='val_accuracy')
 5 # 圖例
 6 plt.legend()
 7 # x坐標描述
 8 plt.xlabel('epochs')
 9 # y坐標描述
10 plt.ylabel('accuracy')
11 # 顯示影像
12 plt.show()

 1 # 畫出訓練集loss曲線圖
 2 plt.plot(np.arange(epochs),history.history['loss'],c='b',label='train_loss')
 3 # 畫出驗證集loss曲線圖
 4 plt.plot(np.arange(epochs),history.history['val_loss'],c='y',label='val_loss')
 5 # 圖例
 6 plt.legend()
 7 # x坐標描述
 8 plt.xlabel('epochs')
 9 # y坐標描述
10 plt.ylabel('loss')
11 # 顯示影像
12 plt.show()

 

7、模型結構大圖

這里給出1000分類的模型結構圖,圖太大,翻起來不好翻,需要pdf的留下郵箱我發給你,

 


宣告:本文參照CSDN博主「別團等shy哥發育」的文章
原文鏈接:https://blog.csdn.net/qq_43753724/article/details/126415101



 

 

 

 

 

 

 

 

 

 

 

 

 

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/514107.html

標籤:其他

上一篇:搜索中常見資料結構與演算法探究(二)

下一篇:使用 Zpan 搭建低成本個人私有網盤,還不限速

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more