人工智能实践:Tensorflow笔记 Class 5:卷积神经网络

目录

5.1 卷积计算过程

5.2 感受野

5.3 全零填充

​5.4 TF描述卷积计算层

5.5 批标准化

5.6 池化

​5.7 舍弃

5.8 卷积神经网络

5.9 CIFAR10数据集

5.10 卷积神经网络搭建

5.11 LeNet

5.12 AlexNet

5.13 VGGNet

5.14 InceptionNet

5.15 ResNet


5.1 卷积计算过程

输入特征图的深度,决定了当前层卷积核的深度

当前层卷积核的个数,决定了当前层输出特征图的深度

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第1张图片

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第2张图片

5.2 感受野

卷积神经网络各输出特征图中的每个像素点,在原始输入图片上映射区域的大小        

若输入特征图宽、高为x,卷积步长为1,当x>10时,两层3*3卷积核,优于一层5*5卷积核。

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第3张图片

5.3 全零填充

希望卷积运算保持输入特征图的尺寸不变

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第4张图片

5.4 TF描述卷积计算层

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第5张图片

5.5 批标准化

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第6张图片

批标准化位于激活层之前,卷积层之后 

 

5.6 池化

池化用于减少特征数据量。

最大化池化可以提取图片纹理,均值池化可保留背景特征

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第7张图片

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第8张图片5.7 舍弃

在神经网络训练时,将一部分神经元按照一定概率从神经网络中暂时舍弃。神经网络使用时,被舍弃的神经元恢复链接。

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第9张图片

5.8 卷积神经网络

借助卷积核提取特征后,送入全连接网络

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第10张图片

5.9 CIFAR10数据集

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第11张图片

5.10 卷积神经网络搭建

利用卷积神经网络训练cifar10数据集,搭建一个一层卷积、两层全连接的网络,使用6个5*5的卷积核,过2*2的池化核,池化步长为2,过128个神经元的全连接层,最后过10个神经元的全连接层

import tensorflow as tf
import os
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.python.ops.gen_batch_ops import Batch
from tensorflow.keras import Model
from tensorflow.keras.layers import Conv2D,BatchNormalization,Activation,MaxPool2D,Dropout,Flatten,Dense
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               #归一化

class Baseline(Model):
    def __init__(self):
        super(Baseline,self).__init__()
        self.c1=Conv2D(filters=6,kernel_size=(5,5),padding='same') #卷积层
        self.b1=BatchNormalization()
        self.a1=Activation('relu')
        self.p1=MaxPool2D(pool_size=(2,2),strides=2,padding='same') #池化层
        self.d1=Dropout(0,2)
        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'])
checkpoint_save_path="./checkpoint/Baseline.ckpt"
if os.path.exists(checkpoint_save_path+'.index'):
    print("load the model")
    model.load_weights(checkpoint_save_path)

cp_callback=tf.keras.callbacks.ModelCheckpoint(filepath=checkpoint_save_path,
                                                save_weights_only=True,
                                                save_best_only=True)
history=model.fit(x_train,y_train,batch_size=32,epochs=5,validation_data=(x_test,y_test),validation_freq=1,
                    callbacks=[cp_callback])

model.summary()

file=open('./weights.txt','w')
for v in model.trainable_variables:
    file.write(str(v.name)+'\n')
    file.write(str(v.shape)+'\n')
    file.write(str(v.numpy())+'\n')
file.close()

5.11 LeNet

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第12张图片

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第13张图片

5.12 AlexNet

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第14张图片人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第15张图片

5.13 VGGNet

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第16张图片

5.14 InceptionNet

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第17张图片

 人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第18张图片

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第19张图片

5.15 ResNet

·网络层数 

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第20张图片

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第21张图片

人工智能实践:Tensorflow笔记 Class 5:卷积神经网络_第22张图片

 

你可能感兴趣的:(机器学习,Python,tensorflow,人工智能,cnn)