自己的理解加上看的资料,今天先非常简单的搭建网络,算是一个开始,用到的方法结构都是常见的方式,以后逐渐补充改进
迭代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)
非常基础简单,这是学习的开始,加油!