使用TensorFlow、Keras简单搭建CNN网络(数据集为cifar10)

本文介绍了使用TensorFlow和Keras搭建基础卷积神经网络(CNN)的过程,针对CIFAR-10数据集进行训练。经过10次迭代,模型的准确率可达到约0.99,作为深度学习入门的起点。
摘要由CSDN通过智能技术生成

自己的理解加上看的资料,今天先非常简单的搭建网络,算是一个开始,用到的方法结构都是常见的方式,以后逐渐补充改进

迭代10次准确率基本上能达到0.99

#coding:utf-8
#Author:DR
#@Time :2020/10/15 22:31

#导入必要的库
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
import numpy as np
from tensorflow.keras import datasets,layers,models



#数据集的导入
(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()  #利用自带数据库导入,此时数据集已经经过处理,训练会快很多

#train_images = train_images.reshape((60000,28,28))  #图片数量及大小
#test_images = test_images.reshape((10000,28,28))

train_images , test_images = train_images / 255.0 , test_images / 255.0  #数据处理映射到【0,1】空间

#模型的搭建
'''
卷积-池化-卷积-池化-卷积-铺平一维-全连接

'''
model = models.Sequential()  #定义模型
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))  #添加卷积层,设定激活函数及输入图片大小
model.add (layers.MaxPooling2D((2,2)))  #最大池化
model.add (layers.Conv2D(64,(3,3),activation = 'relu'))   #卷积核数量调整,直接接收上层信息,不需要设定输入图片大小
model.add (layers.MaxPooling2D((2,2)))
model.add (layers.Conv2D(64,(3,3),activation = 'relu'))
model.add (layers.Flatten())  #数据展开铺平成一维
model.add (layers.Dense(64,activation = 'relu'))
model.add (layers.Dense(10,activation = 'softmax'))   #映射出10个类别
model.summary()   #显示模型结构

#整合数据开始训练

model.compile(optimizer = 'adam',loss = 'sparse_categorical_crossentropy',metrics = ['accuracy'])
'''
优化器为adam,实际为梯度下降函数的变式
损失函数定义为交叉熵损失函数
'''

model.fit(train_images, train_labels, epochs=1)  #整合数据定义训练次数

#设置评估模型,输出精确度

test_loss,test_acc = model.evaluate(test_images,test_labels)
print(test_acc)

网络结构

训练,这里展示的一次训练结果
准确率比较高
非常基础简单,这是学习的开始,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值