tensorflow笔记(6)

tensorflow笔记(6),第1张

自制数据集告一段落后,准备先跨过猫狗分类(没找好数据集和标签),实现卷积神经网络,卷积神经网络便是CBAPD,特征提取后在使用全连接搭建神经网络(CBAPD我会单独出一章,因为怕视觉疲劳),先了解一下cifar10分类数据集用卷积神经网络实现后的效果(此顺序为我的学习顺序,也可以去中国Mooc一步步学),先来浅浅的了解下代码


#常用的六步法

第一步 #导入相关模块

import tensorflow as tf

from keras import Model

import keras.layers import Conv2D,BatchNormalization,Activation,Dense,MaxPool2D,Dropout,Flatten

#这样导入后方便使用,pycharm记忆补全

第二步 #导入数据集

cifar=tf.keras.datasets.cifar10

(x_train,y_train),(x_test,y_test)=cifar10.load_data()

第三步 #搭建神经网络

class Baseline(Model):

        def __init__(self):

                super(Baseline,self).__init__()

                self.c1=Conv2D(filters=6,kernel_size=(5,5),padding="same")

                #卷积层 对应C

                self.b1=BatchNormalization()

                #BN层   对应B

                self.a1=Activation("relu")

                #激活层 对应A

                self.p1=MaxPool2D(pool_size=(2,2),strides=2,padding="same")

                #池化层  对应P

                self.d1=Dropout(0.2)

                #舍弃层  对应D

                self.flatten=Flatten()

                #拉直层

                self.f1=Dense(128,activation="relu")

                #全连接

                self.d2=Dropout(0.2)

                #舍弃

                self.f2=Dense(10,activation="softmax")

                #全连接

        def call(self,x):   #传参

                x=self.c1(x)

                x=self.b1(x)

                x=self.a1(x)

                x=self.p1(x)

                x=self.d1(x)

                x=self.flatten(x)

                x=self.f1(x)

                x=self.d2(x)

                y=self.f2(x)

                return   y

model=Baseline()

第四步        #配置神经网络训练过程

model.compile(optimizer="adam",

                        loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),

                        metrics=["sparse_categorical_accuracy"])

第五步        #执行神经网络训练

model.fit(x_train,y_train,batch_size=32,epochs=5,validation_data=(x_test,y_test),validation_freq=1)

第六步        #打印网络参数

model.summary()


此代码便是一个一层cifar10卷积神经网络,训练结构的准确率并不高,因为cifar10是十分类的,

需要更多卷积层,常用且有名的VGG16,准确率能达到98%左右

取自 中国大学Mooc 曹健教授

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/570968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存