BP神经网络,正向传播求损失,反向传播求误差。

 

 

caffe的fine-tuning: 就是把现成的模型略加修改然后再作少量training,主要用于样本数量不足的情形。

 

 

**层点进点出,逐点计算,维度不会改变

 

 

pytorch最重要是把class完成(网络结构、前向运算),然后定义损失函数、优化器,for循环计算loss。

 

 

content loss 欧式距离

 

 

tf.placeholder

tf.Variable

op(操作符/算子)

图,session中跑流程

 

 

softmax就是如果某一个zj大过其他z,那这个映射的分量就逼近于1,其他就逼近于0,主要应用就是多分类,sigmoid函数只能分两类,而softmax能分多类,softmax是sigmoid的扩展。

 

 

 

损失函数(hinge loss/支持向量机损失、交叉熵损失)

 

神经网络基础A

神经网络基础A

神经网络基础A

 

 

 

线性分类器的理解:模板匹配

 

神经网络基础A

神经网络基础A

 

 

 

 

神经元感知器

神经网络基础A

神经网络基础A

神经网络基础A

 

 

 

 

 

 

激励层

神经网络基础A

神经网络基础A

神经网络基础A

神经网络基础A

 

 

 

 


 

 

 

端到端指的是输入是原始数据,输出是最后的结果,原来输入端不是直接的原始数据,而是在原始数据中提取的特征,这一点在图像问题上尤为突出,因为图像像素数太多,数据维度高,会产生维度灾难,所以原来一个思路是手工提取图像的一些关键特征,这实际就是就一个降维的过程。

 

端到端强调中间不用手工干预

 

做了一些前置处理的,就不是end-to-end了。比如去噪、平滑、显著性提取、分割、去色等等。还比如提取过特征,将特征作为输入的,也不是end-to-end,比如提取个SIFT、RGB值什么的。

将原始图片直接作为输入的,将物理系统需要的调节参数作为输出的,才是端到端。(例如将车辆速度、转角作为输出)

 

 

 

 

 

深度学习中的Batch Normalization

BN就是在神经网络的训练过程中对每层的输入数据加一个标准化处理。

 

BN通过规范化输入数据改变数据分布,在前传过程中消除梯度弥散。

 

 

 

比如你要研究一个新的模型,你是在前人的模型基础上新增加了一些组件,别人也基本都是在这个模型上进行修改,那这个模型就叫做baseline model——基准模型。听名字就能听出来,就是你自己模型的一个基准,一个基本的框架,模型再复杂,最根本的框架是差不多的。比如序列标注任务baseline基本是BILSTM+CRF,大多数人都是在这基础上增改,加些Char-CNN,Attention机制之类的。

 

 

 

 

神经网络单隐层可以逼近任何连续函数单隐层交 多隐层or

 

神经网络基础A

神经网络基础A

神经网络基础A

 

 

 

 

 

 

softmax函数

神经网络基础A神经网络基础A神经网络基础A神经网络基础A神经网络基础A神经网络基础A神经网络基础A神经网络基础A

神经网络基础A

 

 

 

 

 

 

数据格式(data_format)

 

        目前主要有两种方式来表示张量:

        a) th模式或channels_first模式,Theano和caffe使用此模式。

        b)tf模式或channels_last模式,TensorFlow使用此模式。

 

 

        下面举例说明两种模式的区别:

         对于100张RGB3通道的16×32(高为16宽为32)彩色图,

         th表示方式:(100,3,16,32)

         tf表示方式:(100,16,32,3)

         唯一的区别就是表示通道个数3的位置不一样。

 

 

 

 

 

 

 

张量(tensor),可以看作是向量、矩阵的自然推广,用来表示广泛的数据类型。张量的阶数也叫维度。

 

          0阶张量,即标量,是一个数。

 

          1阶张量,即向量,一组有序排列的数

 

          2阶张量,即矩阵,一组向量有序的排列起来

 

          3阶张量,即立方体,一组矩阵上下排列起来

 

          4阶张量......

          依次类推

 

          重点:关于维度的理解

 

          假如有一个10长度的列表,那么我们横向看有10个数字,也可以叫做10维度,纵向看只能看到1个数字,那么就叫1维度。注意这个区别有助于理解Keras或者神经网络中计算时出现的维度问题。

 

 

 

 

 

 

 

Dense(500,input_shape=(784,))

 

               a)Dense层属于网络层-->常用层中的一个层

 

               b) 500表示输出的维度,完整的输出表示:(*,500):即输出任意个500维的数据流。但是在参数中只写维度就可以了,比较具体输出多少个是有输入确定的。换个说法,Dense的输出其实是个N×500的矩阵。

 

              c)input_shape(784,) 表示输入维度是784(28×28),完整的输入表示:(*,784):即输入N个784维度的数据

 

 

 

 

 

shenji

相关文章:

猜你喜欢
  • 2021-06-07
  • 2021-04-29
  • 2022-01-23
  • 2021-05-05
  • 2021-05-24
  • 2021-07-18
相关资源
相似解决方案