深度学习之基于LeNet-5实现cifar10的识别
Cifar10是一個(gè)封裝好的數(shù)據(jù)集,里面包括10中類別的事物。而LeNet-5是最先提出來的卷積神經(jīng)網(wǎng)絡(luò),在之前的學(xué)習(xí)中,我們并沒有利用LeNet-5網(wǎng)絡(luò)進(jìn)行分類,本次實(shí)驗(yàn)我們來看一下基于Lenet-5對cifar10分類的效果。
1.導(dǎo)入庫
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.數(shù)據(jù)處理
(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)參數(shù)設(shè)置
batch_sizes = 128 epochs = 50數(shù)據(jù)如下所示:
3.LeNet-5
經(jīng)典到不能再經(jīng)典的圖片
網(wǎng)絡(luò)編譯&&訓(xùn)練
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 )實(shí)驗(yàn)結(jié)果可視化:
實(shí)驗(yàn)的準(zhǔn)確率不高,在60%左右,而且模型的過擬合現(xiàn)象比較嚴(yán)重。因?yàn)槭堑谝淮窠?jīng)網(wǎng)絡(luò),有這樣的不足很正常。
在原始的LeNet-5網(wǎng)絡(luò)下加入Dropout層
實(shí)驗(yàn)結(jié)果可視化:
過擬合問題得到了解決,但是模型的準(zhǔn)確率還是比較低。
自己搭建CNN網(wǎng)絡(luò)
實(shí)驗(yàn)結(jié)果可視化:
過擬合問題得到了改善,模型的準(zhǔn)確率得到了提高。
總結(jié):LeNet-5網(wǎng)絡(luò)對于Cifar10的模型準(zhǔn)確率比較低,而且過擬合現(xiàn)象比較嚴(yán)重。在LeNet-5網(wǎng)絡(luò)中加入Dropout層后,過擬合現(xiàn)象得到了改善,但是模型的準(zhǔn)確率還是比較低。博主將epochs由50增加到了100,準(zhǔn)確率沒有得到提升。由此證明,單純的增加epochs的次數(shù),并不能很好的改善模型的準(zhǔn)確率。利用自己搭建的CNN網(wǎng)絡(luò),由于網(wǎng)絡(luò)的層數(shù)增加,模型的準(zhǔn)確率得到了提高。
總結(jié)
以上是生活随笔為你收集整理的深度学习之基于LeNet-5实现cifar10的识别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习之基于DCGAN实现动漫人物的生
- 下一篇: 深度学习之基于AlexNet实现猫狗大战