2018-06-29 10:11:39 program_developer 阅读数 18694
  • 深度学习Caffe框架入门视频课程

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 深度学习框架caffe入门,详解网络配置中每一个层的结构和参数项,对于超参数配置文件详解每一个参数的含义以及选择策略。对于数据源实例演示了两种常用的数据源LMDB和HDF5格式。课程涉及许多caffe框架的小技巧如绘制网络图和loss曲线,自定义python层等。希望大家通过学习可以熟练使用caffe去训练网络完成各自的任务。

    20347 人正在学习 去看看 唐宇迪

最近在看深度学习中embedding的内容,把自己看过比较好的相关博客总结收录如下:

(1)深度学习中Embedding层有什么用?

地址:https://blog.csdn.net/u010412858/article/details/77848878

(2)英文版介绍Embedding层作用:

https://medium.com/towards-data-science/deep-learning-4-embedding-layers-f9a02d55ac12

翻译:

https://juejin.im/post/599183c6f265da3e2e5717d2

(3)用一个小例子来介绍embedding工作原理:

http://www.orbifold.net/default/2017/01/10/embedding-and-tokenizer-in-keras/

(4)用很全面的例子来介绍embedding:

https://juejin.im/entry/5acc23f26fb9a028d1416bb3

http://frankchen.xyz/2017/12/18/How-to-Use-Word-Embedding-Layers-for-Deep-Learning-with-Keras/

(5)embedding在Tensorflow中的例子:

https://blog.csdn.net/goddessblessme/article/details/79892613

import tensorflow as tf
import numpy as np

input_ids = tf.placeholder(dtype=tf.int32, shape=[None])
embedding = tf.Variable(np.identity(5, dtype=np.int32))
input_embedding = tf.nn.embedding_lookup(embedding, input_ids)
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
print(embedding.eval())
print(sess.run(input_embedding, feed_dict={input_ids:[1, 2, 3, 0, 3, 2, 1]}))

解释:

第四行:输入变量占位符,长度不定。

第五行:embedding的tensor变量,定义嵌入矩阵,此次为对角阵,矩阵对角上的值为1,其它为0,可以认为是一种one-hot编码。


第六行:通过指定input_ids查找编码。

第七、八行:初始化。

第九行:输出嵌入矩阵。

第十行:feed_dict输入变量赋值,根据input_ids输出第三行的值,分别是对应为[1,2,3,0,3,2,1]的编码向量。

注意:embedding层是可以训练的层,嵌入矩阵是可以学习得到的。

(6)这篇文章可以清楚的理解“词嵌入”和“嵌入层”之间的关系:

地址:http://www.360doc.com/content/17/1021/00/16619343_696787348.shtml

2019-04-10 10:12:05 duozhishidai 阅读数 1131
  • 深度学习Caffe框架入门视频课程

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 深度学习框架caffe入门,详解网络配置中每一个层的结构和参数项,对于超参数配置文件详解每一个参数的含义以及选择策略。对于数据源实例演示了两种常用的数据源LMDB和HDF5格式。课程涉及许多caffe框架的小技巧如绘制网络图和loss曲线,自定义python层等。希望大家通过学习可以熟练使用caffe去训练网络完成各自的任务。

    20347 人正在学习 去看看 唐宇迪

深度学习是指由许多层组成的人工神经网络。“深”是指层数多。相比深度学习,其他的许多机器学习算法是浅的,例如SVM,因为它们没有多层的深架构。多层的架构允许后面的计算建立在前面的计算之上。目前的深度学习网络已经有10+甚至100+层。

多层的存在使得网络能够学习更多的抽象特征。因此,网络的较高层可以获得建立在来自较低层的输入上的更多抽象特征。深度学习网络可以被视为特征提取层(featureextractionlayer),其顶部是分类层(Classificationlayer)。深度学习的能力不在于它的分类,而特征提取。特征提取是自动(没有人为干预)而且多层的。

通过向网络展示大量有标记的示例来训练网络,通过检测误差并调整神经元之间连接的权重以改进结果。重复该优化过程以创建微调后的网络。一旦部署之后,可以利用优化的网络来评估没有标记的图像。

特征工程(Featureengineering)包括找到变量之间的连接并将它们包装到一个新的变量中。深度学习执行自动特征工程。自动特征工程是深度学习的主要特征。特别是对于图像等非结构化数据来说自动特征工程很重要,因为人工的特征工程非常缓慢而且耗费劳力,并且对执行执行工程的人的领域知识有很大依赖性。

深度学习适合目标函数复杂且数据集较大的问题,但有正例和负例的例子。深度学习也适合涉及层次和抽象的问题。

抽象(Abstraction)是一个概念过程,通过抽象从一般规则和概念中衍生出具体例子的使用和分类。我们可以将抽象视为一个“超级类”(super-category)的创建,包括描述特定目的的示例的共同特征,但会忽略每个示例中的“局部变化”(localchanges)。例如,“猫”的抽象包括毛,胡须等。对于深度学习来说,每个层涉及对一个特征的检测,并且随后的层以先前的层为基础。因此,在问题域包括抽象和分层概念的情况下可以使用深度学习。图像识别属于此类别。相比之下,垃圾邮件检测问题可以被建模为一个spreadsheet,可能就不是需要使用深度学习的复杂问题。
  人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
深度学习与计算机视觉的具体介绍
http://www.duozhishidai.com/article-15924-1.html
人工智能,机器学习和深度学习之间,主要有什么差异?
http://www.duozhishidai.com/article-15858-1.html
深度学习初学者必须了解的基本知识
http://www.duozhishidai.com/article-15120-1.html


多智时代-人工智能大数据学习入门网站|人工智能、大数据、物联网云计算的学习交流网站

多智时代-人工智能大数据学习入门网站|人工智能、大数据、云计算、物联网的学习服务的好平台
2019-12-05 23:03:13 zhangphil 阅读数 84
  • 深度学习Caffe框架入门视频课程

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 深度学习框架caffe入门,详解网络配置中每一个层的结构和参数项,对于超参数配置文件详解每一个参数的含义以及选择策略。对于数据源实例演示了两种常用的数据源LMDB和HDF5格式。课程涉及许多caffe框架的小技巧如绘制网络图和loss曲线,自定义python层等。希望大家通过学习可以熟练使用caffe去训练网络完成各自的任务。

    20347 人正在学习 去看看 唐宇迪

AI:神经网络在深度学习过程中每层训练的网络参数容量数量计算推导,Python

在深度学习的卷积神经网络中,训练的参数的计算公式为:

公式1:

 

计算每一层神经网络在深度学习过程中的训练参数个数的常规公式2为:

total_params_count = (filter_height * filter_width * input_channels + 1) * number_of_filters

 

下面介绍具体的神经网络在深度学习过程中,训练参数的详细产生。


案例1

假设现在有一个3X3的1维(输入通道为1)特征图输入(也即意味着该特征图相当于一张灰度图),然后由3个卷积核(过滤器、滤波器),每一个卷积核尺寸为2X2。输出3个通道特征图。神经网络训练的参数个数示意图为:

该层神经网络训练的参数个数即为:

(2*2+1)*3=15

总计15个参数, 这15个参数里面,其中12个为权重值(weights),3个偏差(biases)。


案例2

对于像普通常见的RGB彩色图片,具有3通道(R,G,B)。如果每一个输入特征图都有一个滤波器(卷积核)。产生的卷积按元素添加,并且向每个元素添加偏差项。 形成具有1个特征图的输出。

神经网络训练的参数个数计算:

4*3+1=13

总计13个参数,其中12个是权重,1个是偏差。  


案例3

假设每1个输入特征图都分别有3个滤波器(以紫色,黄色,青色分别表示)。产生的卷积按元素添加,并且向每个元素添加偏差项。现在有2个特征图,最终输出3个特征图。

 

输入2个的特征图,最终输出3个特征图(意味着有3个偏差)。神经网络训练的参数个数为27,其中24个为权重,3个为偏差。

 


Python代码验证

建立神经网络,堆叠几层:

from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from keras.models import Sequential

if __name__ == "__main__":
    model = Sequential()

    model.add(Conv2D(filters=32,
                     kernel_size=(3, 3),
                     input_shape=(150, 150, 3),
                     activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Conv2D(filters=64,
                     kernel_size=(3, 3),
                     activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Conv2D(filters=128,
                     kernel_size=(3, 3),
                     activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Conv2D(filters=128,
                     kernel_size=(3, 3),
                     activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))

    model.add(Flatten())

    model.add(Dense(units=512, activation='relu'))
    model.add(Dense(units=1, activation='sigmoid'))

    print(model.summary())

 

输出:

Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_1 (Conv2D)            (None, 148, 148, 32)      896       
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 74, 74, 32)        0         
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 72, 72, 64)        18496     
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 36, 36, 64)        0         
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 34, 34, 128)       73856     
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 17, 17, 128)       0         
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 15, 15, 128)       147584    
_________________________________________________________________
max_pooling2d_4 (MaxPooling2 (None, 7, 7, 128)         0         
_________________________________________________________________
flatten_1 (Flatten)          (None, 6272)              0         
_________________________________________________________________
dense_1 (Dense)              (None, 512)               3211776   
_________________________________________________________________
dense_2 (Dense)              (None, 1)                 513       
=================================================================
Total params: 3,453,121
Trainable params: 3,453,121
Non-trainable params: 0
_________________________________________________________________
None

 

(1)经过max_pooling2d_1最大池化层处理后,上一层的3维输入被max_pooling2d_1处理后输出为32维(通道)的高维特征图,因此在conv2d_2层的参数个数为:

(3*3*32+1)* 64 = 18496

(2)flatten层是将训练参数展开放平成一维特征图。所以flatten_1层的参数个数就是:

7*7*128=6272

(3)dense层,相当于是1维的特征图,再加1个biases。所以dense_1层训练的参数个数为:

(6272+1)*512=3211776

(4)dense_2层,是前一层的输出特征图(512+1)*1=513个训练参数。

(5)最大池化层不需要训练参数,故参数个数为0。

2019-12-05 21:56:32 web_211xun 阅读数 14
  • 深度学习Caffe框架入门视频课程

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 深度学习框架caffe入门,详解网络配置中每一个层的结构和参数项,对于超参数配置文件详解每一个参数的含义以及选择策略。对于数据源实例演示了两种常用的数据源LMDB和HDF5格式。课程涉及许多caffe框架的小技巧如绘制网络图和loss曲线,自定义python层等。希望大家通过学习可以熟练使用caffe去训练网络完成各自的任务。

    20347 人正在学习 去看看 唐宇迪

深度学习概念:

深度学习是机器学习领域中一个新的研究方向,目的是为了实现人工智能应用。深度学习的概念源于人工神经网络的研究,神经网络是含多个隐藏层的多层感知器,构建神经网络动机在于建立模拟人脑进行分析学习的神经网络,模仿人脑的机制来解释数据。

深度学习步骤:

如何学习深度学习:

推荐一套深度学习视频教程给大家,这套教程适合数学不好的小白来学习,没有繁杂的数学公式,讲解通俗易懂。

点击观看

2019-09-08 22:13:49 qq_23225073 阅读数 86
  • 深度学习Caffe框架入门视频课程

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 深度学习框架caffe入门,详解网络配置中每一个层的结构和参数项,对于超参数配置文件详解每一个参数的含义以及选择策略。对于数据源实例演示了两种常用的数据源LMDB和HDF5格式。课程涉及许多caffe框架的小技巧如绘制网络图和loss曲线,自定义python层等。希望大家通过学习可以熟练使用caffe去训练网络完成各自的任务。

    20347 人正在学习 去看看 唐宇迪

知乎盐选,邵天兰的分享,介绍了深度学习中常见的名词术语,可以快速的了解深度学习内的大体内容。

1 从分类器开始

  • 机器学习的思路
    人共设计特征,提取特征 ===> ML Algorithm(分类器) ===> 分类结果输出
  • 深度学习思路
    神经网络提取特征 ===> 神经网络进行分类 ===> 分类结果输出

2 神经网络的基本组成单元:神经元,层

neuron

input × weight + bias --> sum --> activate function(eg: sigmoid) --> output
  • input/output
  • neuron
  • weighted sum
  • weights
  • bias

activation function

通过 activation function将神经元引入非线性,常见activation function

  • sigmoid
  • tanh
  • ReLU

layer

  • Full Connected layer(FC)
    FC层的每一个neuron的input都是上一层所有neuron的output
  • input layer
  • hidden layer
  • output layer

3 深度学习扛把子:卷及神经网络CNN

CNN layer(卷积层)

55622036236982432.jpg-192.5kB
909073084103838814.jpg-176.3kB
每一个网络层都是有深度的,是三维立体的。每一层的卷积kernel个数就是每一层的网络深度,每一个kernel可以认为是一个特征提取器,卷积的过程其实也就是一个filter的功能。如果有100个kernel,可以认为这一层卷积层就提取了100个features传递给下一层。
神经网络的参数主要在这一层,包括kernel size,Receptive Field, Stride(步幅),padding

Pooling layer(池化层,降采样层)

池化层看做采样,会降低网络层的长度和宽度,一般是减半。这一层的作用是产生了一定的“不变性”,可以认为是一种很那个选取最有用信息的操作。
常见的有

  • Max Pooling
  • Average Pooling

softmax

705710296284107769.jpg-237.5kB

经典网络 VGG

847937086258302368.jpg-166.6kB

Batch normalization

直觉来看,如果每层神经元的输入在训练过程中分布保持一致,会更容易收敛。强行让上一层的输入在一组数据中符合一定要求(均值0,方差1)。也称为Regularizer。

更深层的网络 ResNet

618026598576080561.jpg-193.1kB

更深层的网络 GoogLeNet

362021482332586638.jpg-191.9kB

4 真正让深度学习工作起来

优势:完成复杂学习任务
困难:参数多,数据少,容易过拟合,训练效率低
对策:海量数据,增加算力,加入缓解过拟合方法,加快训练方法

防止过拟合的方法

  • 正则化
  • dropout
    训练时让一些神经网络输出为0
  • noise
    训练时让神经元输出加上一些noise
  • early stopping

5 神经网络训练

前向传播 --> 和ground true比较计算损失函数 --> 反向传播调整每一层的参数

问题:

  • 梯度消失 gradient vanishing
  • 梯度爆炸 gradient explod

更新参数的基本原理

  • 梯度下降 gradient descent

学习率learning rate

重用预先训练的特征 Fine-tuning

在大数据集上训练非常浪费时间,但是小数据集训练效果又不好。由于针对不同的任务,图像特征很多是相通的,可以重用在大数据集上训练得到的特征。
应用场景:yolo模型里面不包含铁轨和罐车,但是现在却需要识别,可以使用yolo已经预训练好的模型,保持卷积层不变(冻结层参数 Freeze Layers),重新初始化全连接层,再训练。

6 前沿方向

  • 从分类到目标检测Object Detection
    RCNN,Fast RCNN, Faster RCNN, SSD,YOLO

  • 语义分割Semantic Segmentation和实例分割Instance Segmentation
    FCN,Mask FRCNN

  • 模型小型化
    SqueezeNet,ShuffleNet

深度学习概述

阅读数 1720

深度学习框架简介

阅读数 569

没有更多推荐了,返回首页