首页 > 其他分享 >tensorflow2从入门到精通——alexnet模型完成图像分类cifar10

tensorflow2从入门到精通——alexnet模型完成图像分类cifar10

时间:2022-11-01 18:38:32浏览次数:57  
标签:tensorflow2 10 22 cifar10 08 29 tensorflow model alexnet


#!/usr/bin/env python 
# -*- coding: utf-8 -*-
# @Time : 2022/8/29 21:46
# @Author : 陈伟峰
# @Site :
# @File : alexnet.py
# @Software: PyCharm
import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt

def getModel():
model = tf.keras.models.Sequential()
model.add(keras.layers.Conv2D(filters=96,kernel_size=11,strides=4,input_shape=(32,32,3),padding='same',activation='relu'))
model.add(keras.layers.BatchNormalization())
model.add(keras.layers.MaxPooling2D(pool_size=3,strides=2,padding='same'))
model.add(keras.layers.Conv2D(filters=256,kernel_size=5,strides=1,padding='same',activation='relu'))
model.add(keras.layers.BatchNormalization())
model.add(keras.layers.MaxPooling2D(pool_size=3,strides=2,padding='same'))
model.add(keras.layers.Conv2D(filters=384,kernel_size=3,strides=1,padding='same',activation='relu'))
model.add(keras.layers.Conv2D(filters=384,kernel_size=3,strides=1,padding='same',activation='relu'))
model.add(keras.layers.Conv2D(filters=256,kernel_size=3,strides=1,padding='same',activation='relu'))
model.add(keras.layers.MaxPooling2D(pool_size=3,strides=2,padding='same'))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(4096,activation='relu'))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Dense(4096,activation='relu'))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Dense(10,activation='softmax')) #修正的输出
return model
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)
model = getModel()
print(model.summary())
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:10:14.020650: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudart64_110.dll
2022-08-29 22:10:16.297928: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library nvcuda.dll
2022-08-29 22:10:16.312140: 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:10:16.312331: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudart64_110.dll
2022-08-29 22:10:16.332270: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublas64_11.dll
2022-08-29 22:10:16.332391: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublasLt64_11.dll
2022-08-29 22:10:16.336976: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cufft64_10.dll
2022-08-29 22:10:16.338270: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library curand64_10.dll
2022-08-29 22:10:16.347628: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cusolver64_11.dll
2022-08-29 22:10:16.351422: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cusparse64_11.dll
2022-08-29 22:10:16.352058: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudnn64_8.dll
2022-08-29 22:10:16.352200: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1871] Adding visible gpu devices: 0
2022-08-29 22:10:16.352538: 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:10:16.353755: 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:10:16.354006: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1871] Adding visible gpu devices: 0
2022-08-29 22:10:16.744536: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1258] Device interconnect StreamExecutor with strength 1 edge matrix:
2022-08-29 22:10:16.744644: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1264] 0
2022-08-29 22:10:16.744707: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1277] 0: N
2022-08-29 22:10:16.744893: 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)
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 8, 8, 96) 34944
_________________________________________________________________
batch_normalization (BatchNo (None, 8, 8, 96) 384
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 4, 4, 96) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 4, 4, 256) 614656
_________________________________________________________________
batch_normalization_1 (Batch (None, 4, 4, 256) 1024
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 2, 2, 256) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 2, 2, 384) 885120
_________________________________________________________________
conv2d_3 (Conv2D) (None, 2, 2, 384) 1327488
_________________________________________________________________
conv2d_4 (Conv2D) (None, 2, 2, 256) 884992
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 1, 1, 256) 0
_________________________________________________________________
flatten (Flatten) (None, 256) 0
_________________________________________________________________
dense (Dense) (None, 4096) 1052672
_________________________________________________________________
dropout (Dropout) (None, 4096) 0
_________________________________________________________________
dense_1 (Dense) (None, 4096) 16781312
_________________________________________________________________
dropout_1 (Dropout) (None, 4096) 0
_________________________________________________________________
dense_2 (Dense) (None, 10) 40970
=================================================================
Total params: 21,623,562
Trainable params: 21,622,858
Non-trainable params: 704
_________________________________________________________________
None
2022-08-29 22:10:17.230099: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:176] None of the MLIR Optimization Passes are enabled (registered 2)
Epoch 1/10
2022-08-29 22:10:17.685067: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudnn64_8.dll
2022-08-29 22:10:18.260050: I tensorflow/stream_executor/cuda/cuda_dnn.cc:359] Loaded cuDNN version 8101
2022-08-29 22:10:19.011708: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublas64_11.dll
2022-08-29 22:10:19.574362: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cublasLt64_11.dll
2022-08-29 22:10:20.055501: 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 [==============================] - 7s 27ms/step - loss: 1.8268 - accuracy: 0.3137 - val_loss: 2.6363 - val_accuracy: 0.1167
Epoch 2/10
134/134 [==============================] - 3s 22ms/step - loss: 1.4673 - accuracy: 0.4662 - val_loss: 1.8395 - val_accuracy: 0.3370
Epoch 3/10
134/134 [==============================] - 3s 22ms/step - loss: 1.3143 - accuracy: 0.5273 - val_loss: 1.4623 - val_accuracy: 0.4691
Epoch 4/10
134/134 [==============================] - 3s 23ms/step - loss: 1.2102 - accuracy: 0.5704 - val_loss: 1.5012 - val_accuracy: 0.4521
Epoch 5/10
134/134 [==============================] - 3s 23ms/step - loss: 1.1259 - accuracy: 0.6013 - val_loss: 1.3672 - val_accuracy: 0.5246
Epoch 6/10
134/134 [==============================] - 3s 23ms/step - loss: 1.0284 - accuracy: 0.6403 - val_loss: 1.2904 - val_accuracy: 0.5595
Epoch 7/10
134/134 [==============================] - 3s 22ms/step - loss: 0.9591 - accuracy: 0.6643 - val_loss: 1.7211 - val_accuracy: 0.4809
Epoch 8/10
134/134 [==============================] - 3s 22ms/step - loss: 0.8855 - accuracy: 0.6919 - val_loss: 1.1592 - val_accuracy: 0.6108
Epoch 9/10
134/134 [==============================] - 3s 22ms/step - loss: 0.7972 - accuracy: 0.7238 - val_loss: 1.1367 - val_accuracy: 0.6180
Epoch 10/10
134/134 [==============================] - 3s 22ms/step - loss: 0.7214 - accuracy: 0.7510 - val_loss: 1.2211 - val_accuracy: 0.6156
313/313 - 1s - loss: 1.2561 - accuracy: 0.6045
[1.2561286687850952, 0.6044999957084656]


标签:tensorflow2,10,22,cifar10,08,29,tensorflow,model,alexnet
From: https://blog.51cto.com/u_13859040/5814667

相关文章

  • tensorflow2从入门到精通——自编码器系列原理以及实现
    自编码器无监督学习,常用于数据去噪,数据降维、图像重构无监督学习监督学习样本数据对应着标签,称之为有监督学习难点绝大部分标签为人工标注有些数据对于标注者的先验......
  • tensorflow2从入门到精通——DCGAN算法实现
    classDCGAN(tf.keras.Model):def__init__(self):super(DCGAN,self).__init__()self.Generator=tf.keras.models.Sequential([#生成器网络......
  • 神经网络-AlexNet 21
     训练的数据集: 含有数据集的:链接:https://pan.baidu.com/s/1u8N_yRnxrNoIMc4aP55rcQ提取码:6wfe 不含数据集的:链接:https://pan.baidu.com/s/1BNVj2XSajJx8u1ZlKadnmw......
  • tensorflow2中以复制方式扩展tensor —— tf.tile()
    tensorflow2.0环境下,以复制方式扩展tensor,可以使用​​tf.tile()​​函数。该函数定义如下(图自官网):https://www.tensorflow.org/api_docs/python/tf/keras/backend/tiletf......
  • Pytorch----入门级CIFAR10的神经网络层,sequential,tansorboard可视化卷积中的各种参
    文章目录​​普通方法​​​​完整代码:​​​​sequential方法​​​​使用tansorboard可视化卷积层中的各种数据​​普通方法使用神经网络:(CIFAR10的神经网络)可以看到......
  • AlexNet-文献阅读笔记
    论文介绍ImageNetClassificationwithDeepConvolutionalNeuralNetworks-AlexKrizhevsky,IlyaSutskever,andGeoffreyE.Hinton该论文是ImageNetLarge-Scale......
  • 从alexnet到resnet,初探深度学习算法玩摄影
    编辑:叶琰简介今天说的是初探,那就是说,目的是为了让大家先有一个比较直观的感受,主要集中在有监督算法上。总体来说,就是指在底层特征的提取上,利用了从Alexnet开始,到最新的模型......
  • TensorFlow2.0(一)
    本文简单实现,模型训练Softmax分类器操作参照官网图像分类:基本分类:对服装图像进行分类 | TensorFlowCore(google.cn)importtensorflowastfimportnumpyas......
  • PyTorch搭建AlexNet实现猫狗分类学习笔记
    PyTorch搭建AlexNet实现猫狗分类一篇简单的学习笔记学习视频:https://www.bilibili.com/video/BV18L4y167jr/?spm_id_from=333.1007.top_right_bar_window_custom_collect......
  • PyTorch 中的 CIFAR10 图像分类
    PyTorch中的CIFAR10图像分类如何为CIFAR10构建高精度CNNPhotoby伊戈尔·莱皮林on不飞溅在本文中,我们将深入探讨CIFAR10图像分类问题。为了解决这个问题,......