#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2022/8/29 22:13
# @Author : 陈伟峰
# @Site :
# @File : gooleNet.py
# @Software: PyCharm
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
# def Conv2d_BN(x,filter,kernel_size,strides=(1,1)):
#
# x = keras.layers.Conv2D(filter,kernel_size,paddind="same",strides=strides,activation="relu")(x)
# x = keras.layers.BatchNormlization(axis=3)(x)
# return x
def Conv2d_BN(x,filter,kernel_size,strides=(1,1)):
x = keras.layers.Conv2D(filter,kernel_size,padding='same',strides=strides,activation='relu')(x)
x = keras.layers.BatchNormalization(axis=3)(x)
return x
def Inception(x,filter):
branch1x1 = Conv2d_BN(x,filter,(1,1), strides=(1,1))
branch3x3 = Conv2d_BN(branch1x1,filter,(3,3), strides=(1,1))
branch1x1 = Conv2d_BN(x,filter,(1,1),strides=(1,1))
branch5x5 = Conv2d_BN(branch1x1,filter,(1,1),strides=(1,1))
branch3x3_pooling = keras.layers.MaxPooling2D(pool_size=(3,3),strides=(1,1),padding='same')(x)
branch1x1_pooling = Conv2d_BN(branch3x3_pooling,filter,(1,1),strides=(1,1))
x = keras.layers.concatenate([branch1x1,branch3x3,branch5x5,branch1x1_pooling],axis=3)
return x
def train_history(model_train,train,val):
plt.plot(model_train.history[train])
plt.plot(model_train.history[val])
plt.title('Train History')
plt.xlabel('epoch')
plt.ylabel(train)
plt.legend(['train','validation'],loc='upper left')
if __name__ == '__main__':
'''
数据集传入
'''
(x_train_image,y_train_label),(x_test_image,y_test_label) = tf.keras.datasets.cifar10.load_data()
x_train_normalize = x_train_image.astype('float32')/255
x_test_normalize = x_test_image.astype('float32')/255
y_train_OneHot = tf.keras.utils.to_categorical(y_train_label)
y_test_OneHot = tf.keras.utils.to_categorical(y_test_label)
inputs = keras.layers.Input(shape=(32,32,3))
x = Conv2d_BN(inputs,64,(7,7),strides=(2,2))
x = keras.layers.MaxPooling2D(pool_size=(3,3),strides=(2,2),padding='same')(x)
x = Conv2d_BN(x,192,(3,3),strides=(1,1))
x = keras.layers.MaxPooling2D(pool_size=(3,3),strides=(2,2),padding='same')(x)
x = Inception(x,64)
x = Inception(x,120)
x = keras.layers.MaxPooling2D(pool_size=(3,3),strides=(2,2),padding='same')(x)
x = Inception(x,128)
x = Inception(x,128)
x = Inception(x,128)
x = Inception(x,132)
x = Inception(x,208)
x = keras.layers.MaxPooling2D(pool_size=(3,3),strides=(2,2),padding='same')(x)
x = Inception(x,208)
x = Inception(x,256)
x = keras.layers.AveragePooling2D(pool_size=(7,7),strides=(1,1),padding='same')(x)
x = keras.layers.Dropout(0.4)(x)
x = keras.layers.Dense(1000,activation='relu')(x)
x = keras.layers.Dense(10,activation='softmax')(x)
x = tf.squeeze(x,axis=1)
x = tf.squeeze(x,axis=1)
model = keras.models.Model(inputs,x,name='inception')
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
model_train = model.fit(x=x_train_normalize,y=y_train_OneHot,validation_split=0.2,epochs=10,batch_size=300,verbose=1)
train_history(model_train,'loss','val_loss')
scores = model.evaluate(x_test_normalize,y_test_OneHot,verbose=2)
print(scores)
2022-08-29 22:30:49.429763: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudart64_110.dll
2022-08-29 22:30:51.598486: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library nvcuda.dll
2022-08-29 22:30:51.613024: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1733] Found device 0 with properties:
pciBusID: 0000:01:00.0 name: NVIDIA GeForce RTX 3060 Laptop GPU computeCapability: 8.6
coreClock: 1.425GHz coreCount: 30 deviceMemorySize: 6.00GiB deviceMemoryBandwidth: 312.97GiB/s
2022-08-29 22:30:51.613200: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudart64_110.dll
2022-08-29 22:30:51.619054: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublas64_11.dll
2022-08-29 22:30:51.619149: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublasLt64_11.dll
2022-08-29 22:30:51.623311: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cufft64_10.dll
2022-08-29 22:30:51.624483: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library curand64_10.dll
2022-08-29 22:30:51.632761: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cusolver64_11.dll
2022-08-29 22:30:51.636222: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cusparse64_11.dll
2022-08-29 22:30:51.636773: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudnn64_8.dll
2022-08-29 22:30:51.636893: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1871] Adding visible gpu devices: 0
2022-08-29 22:30:51.637173: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-08-29 22:30:51.638626: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1733] Found device 0 with properties:
pciBusID: 0000:01:00.0 name: NVIDIA GeForce RTX 3060 Laptop GPU computeCapability: 8.6
coreClock: 1.425GHz coreCount: 30 deviceMemorySize: 6.00GiB deviceMemoryBandwidth: 312.97GiB/s
2022-08-29 22:30:51.638855: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1871] Adding visible gpu devices: 0
2022-08-29 22:30:52.033854: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1258] Device interconnect StreamExecutor with strength 1 edge matrix:
2022-08-29 22:30:52.033979: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1264] 0
2022-08-29 22:30:52.034051: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1277] 0: N
2022-08-29 22:30:52.034289: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1418] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 3491 MB memory) -> physical GPU (device: 0, name: NVIDIA GeForce RTX 3060 Laptop GPU, pci bus id: 0000:01:00.0, compute capability: 8.6)
2022-08-29 22:30:52.836642: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:176] None of the MLIR Optimization Passes are enabled (registered 2)
Epoch 1/50
2022-08-29 22:30:55.082701: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudnn64_8.dll
2022-08-29 22:30:55.634730: I tensorflow/stream_executor/cuda/cuda_dnn.cc:359] Loaded cuDNN version 8101
2022-08-29 22:30:56.357622: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublas64_11.dll
2022-08-29 22:30:56.913390: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublasLt64_11.dll
2022-08-29 22:30:57.618117: I tensorflow/stream_executor/cuda/cuda_blas.cc:1838] TensorFloat-32 will be used for the matrix multiplication. This will only be logged once.
134/134 [==============================] - 13s 55ms/step - loss: 2.2192 - accuracy: 0.2601 - val_loss: 2.5213 - val_accuracy: 0.1053
Epoch 2/50
134/134 [==============================] - 6s 43ms/step - loss: 1.7366 - accuracy: 0.3866 - val_loss: 3.3446 - val_accuracy: 0.1104
Epoch 3/50
134/134 [==============================] - 6s 43ms/step - loss: 1.7176 - accuracy: 0.3972 - val_loss: 2.0036 - val_accuracy: 0.3113
Epoch 4/50
134/134 [==============================] - 6s 43ms/step - loss: 1.5379 - accuracy: 0.4633 - val_loss: 2.2799 - val_accuracy: 0.2588
Epoch 5/50
134/134 [==============================] - 6s 43ms/step - loss: 1.5320 - accuracy: 0.4631 - val_loss: 2.0946 - val_accuracy: 0.3592
Epoch 6/50
134/134 [==============================] - 6s 43ms/step - loss: 1.3989 - accuracy: 0.5070 - val_loss: 1.6894 - val_accuracy: 0.3998
Epoch 7/50
134/134 [==============================] - 6s 43ms/step - loss: 1.3508 - accuracy: 0.5206 - val_loss: 1.7688 - val_accuracy: 0.4019
Epoch 8/50
134/134 [==============================] - 6s 43ms/step - loss: 1.2056 - accuracy: 0.5709 - val_loss: 1.3465 - val_accuracy: 0.5237
Epoch 9/50
134/134 [==============================] - 6s 43ms/step - loss: 1.0875 - accuracy: 0.6115 - val_loss: 1.3377 - val_accuracy: 0.5343
Epoch 10/50
134/134 [==============================] - 6s 43ms/step - loss: 0.9995 - accuracy: 0.6482 - val_loss: 1.3734 - val_accuracy: 0.5214
Epoch 11/50
134/134 [==============================] - 6s 43ms/step - loss: 0.9320 - accuracy: 0.6712 - val_loss: 1.2808 - val_accuracy: 0.5741
Epoch 12/50
134/134 [==============================] - 6s 43ms/step - loss: 0.8512 - accuracy: 0.7010 - val_loss: 1.5813 - val_accuracy: 0.5206
Epoch 13/50
134/134 [==============================] - 6s 43ms/step - loss: 0.8006 - accuracy: 0.7185 - val_loss: 1.3174 - val_accuracy: 0.5737
Epoch 14/50
134/134 [==============================] - 6s 44ms/step - loss: 0.7429 - accuracy: 0.7394 - val_loss: 1.3108 - val_accuracy: 0.5697
Epoch 15/50
134/134 [==============================] - 6s 44ms/step - loss: 0.6878 - accuracy: 0.7592 - val_loss: 1.2757 - val_accuracy: 0.5916
Epoch 16/50
134/134 [==============================] - 6s 43ms/step - loss: 0.6394 - accuracy: 0.7756 - val_loss: 1.5035 - val_accuracy: 0.5615
Epoch 17/50
134/134 [==============================] - 6s 43ms/step - loss: 0.5965 - accuracy: 0.7917 - val_loss: 1.3905 - val_accuracy: 0.6001
Epoch 18/50
134/134 [==============================] - 6s 43ms/step - loss: 0.5398 - accuracy: 0.8122 - val_loss: 1.4108 - val_accuracy: 0.5911
Epoch 19/50
134/134 [==============================] - 6s 43ms/step - loss: 0.5152 - accuracy: 0.8220 - val_loss: 1.7507 - val_accuracy: 0.5462
Epoch 20/50
134/134 [==============================] - 6s 43ms/step - loss: 0.4682 - accuracy: 0.8357 - val_loss: 1.6439 - val_accuracy: 0.5697
Epoch 21/50
134/134 [==============================] - 6s 43ms/step - loss: 0.4936 - accuracy: 0.8296 - val_loss: 1.5974 - val_accuracy: 0.5581
Epoch 22/50
134/134 [==============================] - 6s 43ms/step - loss: 0.4601 - accuracy: 0.8404 - val_loss: 1.3492 - val_accuracy: 0.6186
Epoch 23/50
134/134 [==============================] - 6s 43ms/step - loss: 0.3828 - accuracy: 0.8685 - val_loss: 1.3875 - val_accuracy: 0.6203
Epoch 24/50
134/134 [==============================] - 6s 43ms/step - loss: 0.3533 - accuracy: 0.8784 - val_loss: 1.5947 - val_accuracy: 0.6039
Epoch 25/50
134/134 [==============================] - 6s 43ms/step - loss: 0.3383 - accuracy: 0.8839 - val_loss: 1.8830 - val_accuracy: 0.5686
Epoch 26/50
134/134 [==============================] - 6s 44ms/step - loss: 0.3461 - accuracy: 0.8798 - val_loss: 1.5892 - val_accuracy: 0.6180
Epoch 27/50
134/134 [==============================] - 6s 44ms/step - loss: 0.2997 - accuracy: 0.8965 - val_loss: 1.3800 - val_accuracy: 0.6441
Epoch 28/50
134/134 [==============================] - 6s 44ms/step - loss: 0.2734 - accuracy: 0.9056 - val_loss: 1.5650 - val_accuracy: 0.6333
Epoch 29/50
134/134 [==============================] - 6s 44ms/step - loss: 0.2517 - accuracy: 0.9121 - val_loss: 2.9988 - val_accuracy: 0.4577
Epoch 30/50
134/134 [==============================] - 6s 44ms/step - loss: 0.4527 - accuracy: 0.8497 - val_loss: 1.5299 - val_accuracy: 0.6205
Epoch 31/50
134/134 [==============================] - 6s 44ms/step - loss: 0.2878 - accuracy: 0.9013 - val_loss: 1.5270 - val_accuracy: 0.6382
Epoch 32/50
134/134 [==============================] - 6s 44ms/step - loss: 0.2147 - accuracy: 0.9260 - val_loss: 1.5837 - val_accuracy: 0.6480
Epoch 33/50
134/134 [==============================] - 6s 44ms/step - loss: 0.2059 - accuracy: 0.9297 - val_loss: 1.4979 - val_accuracy: 0.6459
Epoch 34/50
134/134 [==============================] - 6s 44ms/step - loss: 0.1900 - accuracy: 0.9360 - val_loss: 1.7602 - val_accuracy: 0.6149
Epoch 35/50
134/134 [==============================] - 6s 44ms/step - loss: 0.1850 - accuracy: 0.9374 - val_loss: 1.6427 - val_accuracy: 0.6526
Epoch 36/50
134/134 [==============================] - 6s 44ms/step - loss: 0.1732 - accuracy: 0.9399 - val_loss: 1.5847 - val_accuracy: 0.6415
Epoch 37/50
134/134 [==============================] - 6s 44ms/step - loss: 0.1559 - accuracy: 0.9465 - val_loss: 2.0123 - val_accuracy: 0.6007
Epoch 38/50
134/134 [==============================] - 6s 44ms/step - loss: 0.2026 - accuracy: 0.9312 - val_loss: 1.5363 - val_accuracy: 0.6608
Epoch 39/50
134/134 [==============================] - 6s 44ms/step - loss: 0.1485 - accuracy: 0.9492 - val_loss: 1.6494 - val_accuracy: 0.6501
Epoch 40/50
134/134 [==============================] - 6s 45ms/step - loss: 0.1300 - accuracy: 0.9559 - val_loss: 1.7147 - val_accuracy: 0.6395
Epoch 41/50
134/134 [==============================] - 6s 45ms/step - loss: 0.1388 - accuracy: 0.9535 - val_loss: 1.5886 - val_accuracy: 0.6646
Epoch 42/50
134/134 [==============================] - 6s 45ms/step - loss: 0.1403 - accuracy: 0.9521 - val_loss: 1.5718 - val_accuracy: 0.6719
Epoch 43/50
134/134 [==============================] - 6s 44ms/step - loss: 0.1309 - accuracy: 0.9557 - val_loss: 1.7743 - val_accuracy: 0.6429
Epoch 44/50
134/134 [==============================] - 6s 45ms/step - loss: 0.1307 - accuracy: 0.9544 - val_loss: 1.7182 - val_accuracy: 0.6605
Epoch 45/50
134/134 [==============================] - 6s 45ms/step - loss: 0.2331 - accuracy: 0.9258 - val_loss: 1.6641 - val_accuracy: 0.6407
Epoch 46/50
134/134 [==============================] - 6s 45ms/step - loss: 0.1283 - accuracy: 0.9566 - val_loss: 2.1234 - val_accuracy: 0.6093
Epoch 47/50
134/134 [==============================] - 6s 44ms/step - loss: 0.1143 - accuracy: 0.9611 - val_loss: 1.6324 - val_accuracy: 0.6768
Epoch 48/50
134/134 [==============================] - 6s 44ms/step - loss: 0.1067 - accuracy: 0.9641 - val_loss: 2.1524 - val_accuracy: 0.6065
Epoch 49/50
134/134 [==============================] - 6s 45ms/step - loss: 0.0953 - accuracy: 0.9676 - val_loss: 1.8225 - val_accuracy: 0.6467
Epoch 50/50
134/134 [==============================] - 6s 45ms/step - loss: 0.0943 - accuracy: 0.9675 - val_loss: 1.7794 - val_accuracy: 0.6592
313/313 - 3s - loss: 1.8017 - accuracy: 0.6520
[1.8016941547393799, 0.6520000100135803]