200813_tensorflow2---5、卷积神经网络讲课,用CBAPD讲的话,真的极佳

200813_tensorflow2---5、卷积神经网络讲课,用CBAPD讲的话,真的极佳

一、总结

一句话总结:

卷积就是特征提取器,就是C(卷积层)B(批标准化层)A(激活层)P(池化层)D(dropout层)
model=tf.keras.models.Sequential([
    Conv2D(filters=6,kernel_size=(5,5),padding='same'),#卷积层
    BatchNormalization(),#BN层
    Activation('relu'),#激活层
    MaxPoo12D(pool_size=(2,2),strides=2,padding='same'),#池化层
    Dropout(0.2),#dropout层
])

1、保存模型的时候,比起保存整个模型,保存weight的意义何在?

保存weight可以非常方便的查看每一层神经网络weight的参数,可以非常直观的查看整个网络
print(model.trainable_variables)
file = open('./weights.txt', 'w')
for v in model.trainable_variables:
    file.write(str(v.name) + '
')
    file.write(str(v.shape) + '
')
    file.write(str(v.numpy()) + '
')
file.close()

2、LeNet(1998)和AlexNet(2012)的特点?

LeNet(1998):卷积网络开篇之作,共享卷积核,减少网络参数
AlexNet(2012):使用relu激活函数,提升训练速度;使用Dropout,缓解过拟合

3、VGGNet(2014)、InceptionNet(2014)、ResNet(2015)的特点?

VGGNet(2014):小尺寸卷积核减少参数,网络结构规整,适合并行加速
InceptionNet(2014):一层内使用不同尺寸卷积核,提升感知力使用批标准化,缓解梯度消失
ResNet(2015):层间残差跳连,引入前方信息,缓解模型退化,使神经网络层数加深成为可能

4、我们常说的优化模型中的参数初始化到底是什么?

就是初始化w和b,比如全0、全1、正态分布、标准分布等等

5、神经网络训练的一般技巧?

(A)、数据增强(对训练集图像进行旋转、偏移、翻转等多种操作, 目的是增强训练集的随机性)、
(B)、学习率策略(一般的策略是在训练过程中逐步减小学习率)、
(C)、Batch size 的大小设置(每个 batch 包含训练集图片的数量)、
(D)、模型参数初始化的方式等等。


另外,需要指出的是,在利用这些网络训练 cifar10 数据集时,课程给出的源码并未包 含其它的一些训练技巧,
例如数据增强(对训练集图像进行旋转、偏移、翻转等多种操作, 目的是增强训练集的随机性)、学习率策略(一般的策略是在训练过程中逐步减小学习率)、 Batch size 的大小设置(每个 batch 包含训练集图片的数量)、模型参数初始化的方式等等。
然而实际上,一些训练方法和超参数的设定对模型训练结果的影响是相当显著的,以 ResNet18 为例,如果采取合适的训练技巧,cifar10 的识别准确率是足以突破 90 %的。
所以, 在神经网络的训练中,除了选择合适的模型以外,如何更好地训练一个模型也是一个非常值 得探究的问题。

6、为什么在cifar10中的InceptionNet的表现不好?

(I)、首先其本身的设计理念是采用不同尺寸的卷积核,提供不同的感受 野,但 cifar10 只是一个单一的分类任务,二者的契合度并不高,
(II)、另外,由于本身结构的原因,InceptionNet 的参数量和计算量都比较大,训练需要耗费的资源比较多,所以课堂上仅 仅搭建了一个深度为 10 的精简版本(完整的 InceptionNet v1,即 GoogLeNet 有 22 层,训练 难度很大)

二、内容在总结中

博客对应课程的视频位置:

 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/13507099.html