tensorflow2.0 resnet18 CIFAR-10图像分类



CIFAR-10数据分类

CIFAR-10数据简介

  Cifar-10 数据集是由Hinton教授的学生Alex Krizhevsky、Ilya Sutskever收集的一个用于普适物体识别的计算机视觉数据集,它包含 60000 张 32 * 32 的 RGB 彩色图片,总共 10 个分类,每一类包含6000张图片。其中,包括 50000 张用于训练集,10000 张用于测试集。在该数据集中,文件 data_batch_1.bin 、data_batch_2.bin 、… 、data_batch_5.bin 和test_ batch.bin中各有10000个样本。一个样本由3073个字节组成, 第一个字节为标签,剩下3072个字节为图像数据。整个数据集的10个类型分别为:飞机、小汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车。
  使用python版本的tensorflow框架,tensorflow框架提供了该数据集的自动下载和读取的方式。随机抽取展示20张图,如图所示,可以看出数据集上的图片为彩色图像。
在这里插入图片描述

ResNet18网络

 深度残差网络(ResNet)模型诞生于2015年,是在针对于网络的退化问题,何凯明提出的残差学习方法,他提出的该模型获得了当年ImageNet竞赛的冠军。它的top5错误率为3.57%。该网络表明,卷积神经网络的层数存在着饱和度,并不是层数的堆叠就一定能够提高性能。其次,提出了层间残差跳连的思想,改善网络层数增加导致的退化,即梯度消失问题。
 ResNet模型借鉴了Highway Network的思想,若网络的输入为x,并且希望得到的输出为H(x)。如果我们直接的进行这样的复杂映射,可能会比较困难。但是,如果把输入x直接作为初始结果,则输出为H(x)=F(x)+x,当F(x)=0时,该式转化为恒等映射,ResNet的学习目标变为残差,即H(x)-x,此时,训练的目标则是尽可能的使残差趋于0,这样训练的难度就大大的降低。
 通过残差跨层连接结构,网络中某一层的输出可以跳过中间的某几层作为后面的其中一层的输入。ResNet的出现为加深网络层次而模型的性能提升提供了新的方向(如 DenseNet等),使得卷积神经网络的层数可以大大的加深。


import tensorflow as tf
import os
import numpy as np
from matplotlib import pyplot as plt
from tensorflow.python.keras.api._v2.keras import layers, Sequential, regularizers
from tensorflow.keras.layers import Conv2D, BatchNormalization, Activation, MaxPool2D, Dropout, Flatten, Dense
from tensorflow.keras import Model
from tensorflow.keras.utils import plot_model
from tensorflow import keras
import tensorflow.keras.preprocessing.image as image

np.set_printoptions(threshold=np.inf)#控制台输出所有的值,不需要省略号
#预处理
cifar10 = tf.keras.datasets.cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

#数据集切分
x_valid,x_train=x_train[:3000],x_train[3000:]
y_valid,y_train=y_train[:3000],y_train[3000:]

#数据展示
labels = ['飞机','小汽车','鸟','猫','鹿','狗','青蛙','马','船','卡车']
plt.figure(figsize=(14,14)) 
#显示前10张图像,并在图像上显示类别
for i in range(20):   
    plt.subplot(4,5,i+1)
    plt.grid(False)
    plt.imshow(x_train[i,:,:,],cmap=plt.cm.binary)
    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
    t = labels[y_train[i][
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值