第四部分 深度卷积网络-实例探究 3 笔记

本文介绍了Inception网络的基本概念,包括其模块结构及1x1卷积的思想,并探讨了Inception网络的不同版本,如InceptionV2、V3及V4等。此外,还讨论了如何利用已训练好的网络进行迁移学习,以及数据扩充对训练的影响。
2.7 Inception网络
Inception network

2.6提出的模块结构加上1x1卷积的思想就构成了Inception模块。


Inception网络所做的就是将这些模块都组合到一起:

Inception网络,即是很多个Inception模块一环接一环,最后组成了网络。自从Inception模块诞生以来,经过研究者们的不断发展,衍生了许多新的版本,比如Inception V2、V3以及V4,以及引入了跳跃连接的网络,有时也会有特别好的效果。但所有的这些变体都建立在2.6中基本思想上。

2.8 使用开源的方案
Using open-source implementations
ResNet的实现网址: https://github.com/KaimingHe/deep-residual-networks (基于Caffe框架)鼓励开源,训练的好的网络,可以很好的用来进行迁移学习。

2.9 迁移学习
Transfer Learning
开源数据集举例:ImageNet、MS COCO、Pascal。

小数据集学习时,可以利用已经训练好的网络,丢掉最后的softmax层,然后创建自己对应类别的softmax层,然后freeze其他层的权重,随后进行训练。当数据集稍大时,可以从后往前依次放开权重,逐次进行训练。如果有一个更大的数据集,也许有足够多的数据,则不要单单训练一个softmax单元,而是考虑训练中等大小的网络,包含最终要用的网络的后面几层。 最后当数据量足够大时,可将训练好的网络权重作为初始化的值,进而训练整个网络,即每次迭代对所有权重进行更新。

另一方面,可以将已训练好的网络,作为特征提取器,将softmax前面的一层作为提取的特征,将每个数据输入到网络后得到相应的特征,然后针对转换后的特征训练softmax分类器。预计算方法的优点就是,不需要每次遍历训练集再重新计算这个激活值。

2.10 数据扩充
Data augmentation
针对计算机视觉问题,数据扩充会对训练带来很大帮助。
扩充手段:
  • 影像镜像(Mirroring)
  • 随机裁剪(Random Cropping)
  • 旋转(Rotation)
  • 剪切(Shearing)
  • 局部弯曲(Local warping)
  • 彩色转换(Color shifting)(PCA颜色增强)
  • ...
扩充后数据训练示意

2.11 计算机视觉现状
The state of computer vision

少量数据 —————————————————————————————————————————————> 大量数据
更多手动工程 物体检测 图像识别 语音识别 简单算法,少量手动工程

数据量的大小影响着手动工程的多少。
  1. 当有很多数据时,倾向于使用更简单的算法和更少的手工工程,因为我们不需要为这个问题精心设计特征。当有大量的数据时,只要有一个大型的神经网络,甚至一个更简单的架构,可以是一个神经网络,就可以去学习它想学习的东西。
  2. 当没有太多数据时,手工工程实际上是获得良好表现的最佳方式。

学习算法有两种知识来源:1、来源是被标记的数据,就像(x,y)应用在监督学习;2、来源是手工工程,有很多方法去建立一个手工工程系统,它可以是源于精心设计的特征,手工精心设计的网络体系结构或者是系统的其他组件。所以当没有太多标签数据时,只需要更多地考虑手工工程。

基准测试(benchmark)建议:
  1. 集成。独立训练多个网络,随后对结果取平均。
  2. Multi-crop at test time。将数据扩充应用到测试集上,即针对同一测试数据的不同扩充,对其测试结果取平均值。
### 吴恩达深度学习课程笔记与资料总结 吴恩达的深度学习课程在Coursera平台上提供了全面的学习体验,涵盖了从基础到高级的深度学习知识。以下是根据引用内容和专业知识整理出的课程笔记和资料汇总[^2]。 #### 1. 神经网络深度学习 这门课是整个系列的基础部分,主要介绍了深度学习的基本概念和神经网络的工作原理。 - **第一周**:深度学习引言,包括机器学习的定义、监督学习、无监督学习、半监督学习和强化学习的概念[^3]。 - **第二周**:神经网络的编程基础,讲解了如何使用Python和NumPy实现简单的神经网络[^4]。 - **第三周**:浅层神经网络,深入探讨了激活函数的选择、梯度下降算法以及正向传播和反向传播的过程[^4]。 - **第四周**:深层神经网络,讨论了多层神经网络的结构设计、初始化方法以及优化策略。 #### 2. 改善深层神经网络 这门课专注于提高模型性能的技术,包括超参数调试、正则化和优化方法。 - **第一周**:深度学习的实用层面,介绍了批量归一化(Batch Normalization)、Dropout等技术的应用[^4]。 - **第二周**:优化算法,详细讲解了动量法(Momentum)、RMSprop和Adam等优化算法的原理及其优缺点[^4]。 - **第三周**:超参数调试、Batch正则化和程序框架,分享了如何系统地选择超参数以及使用TensorFlow或Keras等框架进行开发。 #### 3. 结构化机器学习项目 该课程帮助学习者掌握如何高效地组织和执行机器学习项目。 - **第一周**:机器学习策略(1),讲解了如何设定目标、选择数据集以及评估模型性能。 - **第二周**:机器学习策略(2),进一步探讨了偏差-方差权衡、过拟合和欠拟合问题的解决方案。 #### 4. 卷积神经网络 本课程重点介绍了卷积神经网络(CNN)及其在图像识别中的应用。 - **第一周**:卷积神经网络,讲解了卷积层、池化层和全连接层的基本概念及其实现方法[^4]。 - **第二周**:深度卷积网络实例探究,分析了ResNet、Inception等经典架构的设计思想。 - **第三周**:目标检测,介绍了YOLO和SSD等目标检测算法的工作机制。 - **第四周**:特殊应用:人脸识别和神经风格转换,展示了深度学习在实际场景中的创新应用。 #### 5. 序列模型 最后这门课聚焦于序列数据处理,特别是自然语言处理领域。 - **第一周**:循环序列模型,讲解了RNN、LSTM和GRU等模型的结构特点及其适用场景[^4]。 - **第二周**:自然语言处理与词嵌入,介绍了词向量表示方法以及它们在文本分类、情感分析等任务中的作用[^4]。 - **第三周**:序列模型和注意力机制,深入探讨了注意力机制的原理及其在翻译、语音识别等任务中的应用[^4]。 ```python # 示例代码:简单神经网络实现 import numpy as np def sigmoid(x): return 1 / (1 + np.exp(-x)) def initialize_parameters(n_x, n_h, n_y): W1 = np.random.randn(n_h, n_x) * 0.01 b1 = np.zeros((n_h, 1)) W2 = np.random.randn(n_y, n_h) * 0.01 b2 = np.zeros((n_y, 1)) parameters = {"W1": W1, "b1": b1, "W2": W2, "b2": b2} return parameters def forward_propagation(X, parameters): W1 = parameters["W1"] b1 = parameters["b1"] W2 = parameters["W2"] b2 = parameters["b2"] Z1 = np.dot(W1, X) + b1 A1 = np.tanh(Z1) Z2 = np.dot(W2, A1) + b2 A2 = sigmoid(Z2)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值