深度学习之基于LeNet-5实现cifar10的识别
生活随笔
收集整理的這篇文章主要介紹了
深度学习之基于LeNet-5实现cifar10的识别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Cifar10是一個封裝好的數據集,里面包括10中類別的事物。而LeNet-5是最先提出來的卷積神經網絡,在之前的學習中,我們并沒有利用LeNet-5網絡進行分類,本次實驗我們來看一下基于Lenet-5對cifar10分類的效果。
1.導入庫
import tensorflow as tf import numpy as np import os,PIL import matplotlib.pyplot as plt from tensorflow import keras from tensorflow.keras import datasets,layers,models2.數據處理
(train_images,train_labels),(test_images,test_labels) = tf.keras.datasets.cifar10.load_data() train_images = train_images / 255.0 test_images = test_images / 255.0#歸一化all_labels_name = ['airplane', 'automobile', 'bird', 'cat', 'deer','dog', 'frog', 'horse', 'ship', 'truck'] train_db = tf.data.Dataset.from_tensor_slices((train_images,train_labels)) train_db = train_db.shuffle(1000).batch(batch_sizes) test_db = tf.data.Dataset.from_tensor_slices((test_images,test_labels)) test_db = test_db.batch(batch_sizes)參數設置
batch_sizes = 128 epochs = 50數據如下所示:
3.LeNet-5
經典到不能再經典的圖片
網絡編譯&&訓練
model.compile(optimizer= "adam",loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),metrics=['accuracy']) history = model.fit(train_db,validation_data=test_db,epochs=epochs )實驗結果可視化:
實驗的準確率不高,在60%左右,而且模型的過擬合現象比較嚴重。因為是第一代神經網絡,有這樣的不足很正常。
在原始的LeNet-5網絡下加入Dropout層
實驗結果可視化:
過擬合問題得到了解決,但是模型的準確率還是比較低。
自己搭建CNN網絡
實驗結果可視化:
過擬合問題得到了改善,模型的準確率得到了提高。
總結:LeNet-5網絡對于Cifar10的模型準確率比較低,而且過擬合現象比較嚴重。在LeNet-5網絡中加入Dropout層后,過擬合現象得到了改善,但是模型的準確率還是比較低。博主將epochs由50增加到了100,準確率沒有得到提升。由此證明,單純的增加epochs的次數,并不能很好的改善模型的準確率。利用自己搭建的CNN網絡,由于網絡的層數增加,模型的準確率得到了提高。
總結
以上是生活随笔為你收集整理的深度学习之基于LeNet-5实现cifar10的识别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习之基于DCGAN实现动漫人物的生
- 下一篇: 深度学习之基于AlexNet实现猫狗大战