深度学习笔记

深度学习

1.深度学习介绍

  • 学习

    • 抽象说,学习就是认知的过程,从未知到已知的探索和思考。
    • 任何从已经有的信息,无论是通过计算,判断,推理而后得到一个认知的过程都可以称为"学习"
  • 输入

    • 就是已知的信息
  • 输出

    • 就是最终获得的认知的结果
  • 学习策略

    • 思考过程,经验不同而导致的差异,可以统一归为"学习策略",好的学习策略会更快更准确的得到认知的结果,而不好的学习策略可能会花费更多的时间或者获得错误的结论
  • 神经网络

    • 现实世界中很多问题都可以归为分类或者回归问题,研究此类问题,学术界研究出来一种叫做"神经网络"的学习策略

    • 在人脑中负责活动的基本单元是"神经元",它是细胞体为主体,由许多向周围延伸的不规则树枝状纤维构成的神经细胞。人脑中含有上百亿个神经元,这些神经元互相连接成一个更庞大的结构,就称为"神经网络"。学术界试图模仿人脑的"神经网络"建立一个类似的学习策略,也取名为"神经网络"。

深度学习笔记_第1张图片

  • x1,x2,x3输入到输出的过程,定义了层次的概念。例如上图:包含四层,包括最左边的的输入层和最右边的输出层。L1和L4分别是输入层和输出层。l2和L3是隐藏层。即题目越难,给出的解题条件的信息可能越多,而解题所需要的过程就越复杂,也就可能需要更多的"隐藏层"来计算最终的结果

  • 深度

    • 就是从"输入层"到"输出层"所经历层次的数目,即"隐藏层"的层数,层数越多,网络的深度越深。所以越是复杂的问题,越需要深度和层次越多,每层的"神经元"数目也会变多。例如:AlphaGo的策略网络是13层,每一层的神经元数量为192个
  • 总结:深度学习就是用多层次的分析和计算手段,得到结果的一种方法

2.深度学习代表性的应用

  • 图像识别(图像理解)

    • 给机器一张图片让机器可以理解图片的内容
      • 人脸识别
      • 验证码识别
  • 语音识别

  • 自然语言处理NLP

    • 理解人类的语言

      • 情感分析
      • 智能对话
      • 图像识别和NLP的结合
      • 例如:根据图片,得到一句图片相关内容的句子
        深度学习笔记_第2张图片
  • 机器自主(无人驾驶)

3.机器学习和深度学习的区别

  • 算法方面:
    • 机器学习的算法主要是处理回归和分类的相关问题
    • 深度学习算法主要是处理较为复杂的相关事物的处理,比如NLP,图像识别,语音识别等
  • 应用领域方面:
    • 在NLP,图像识别,语音识别等领域中使用机器学习处理效果不好,但是深度学习可达到很好的效果。且深度学习已经被应用到了计算机的视觉,语音识别,NLP,音频识别于生物信息学等领域并获取了极好的结果
  • 总结:机器学习和深度学习主要的区别就是算法和效率的不同

4.深度学习框架

  • TensorFlow

  • Caffe

  • Torch

5.TensorFlow

5.1认识tensorflow

  • 谷歌大脑的产物,谷歌大脑最初是由吴恩达带领的
  • 在谷歌内部很多产品都应用了TensorFlow,比如AlphaGo,Gmail,谷歌地图等
  • TensorFlow的特点:
    • 真正的可移植性
      • 引入各种计算机设备的支持,包括CPU,GPU以及能够很好的运行在各个系统的移动端
    • 多语言支持
      • 支持C++,python,R语言等
    • 高度的灵活性和效率

5.2 环境安装

  • cpugpu的区别
    • cpu:在电脑中起着控制计算机运行的作用,是电脑的中央处理器
    • gpu:是一个附属型的处理器,主要处理计算中与图像计算有关的工作,并将数据更好地呈现在显示器中
  • 总结:使用gpu的数据处理要比cpu效率更快

6.tensorflow进阶

  • 图:Tensorflow是一个编程系统(一个编程语言),使用图(graph)来表示一个计算任务或者计算单元
    • 计算任务:实现一个加法器,任意值的加法运算就是一个计算任务
  • 会话:图必须要在会话中进行执行
  • tensor:就是numpy中的ndarray,因此tensor是一种数据类型,每个tensor是一个类型化的数组或者是op的返回值,就是tensorflow中的数据。tensor也可以被称为张量,张量的阶就是数组的维度
  • 节点op(operation):图表示tensorflow的计算任务,而一个计算任务的具体实现操作就是op,一个op需要使用0个或者多个tensor来执行计算且会产生0个或多个tensor,即tensorflowapi定义的函数都是op
  • 总结
    • 图描述了tensorflow计算的过程,为了进行计算,土必须在会话历被启动,会话将图的op分发到诸如cpu或gpu之类的设备上,图同时提供执行op的方法,这些方法执行后,将产生的tensor返回

5.2属性与方法

  • 实现加法运算

    • add(a,b)
  • 矩阵运算

    • tf.matmul(a,b)
  • 平方

    • tf.square(x)
  • 均值

    • tf.reduce_mean()
  • 梯度下降api

    • 类:tf.train.GradientDescentOptimizer(learn_rate)
      • learning_rate:需要指定学习率
  • 获取图

    • tf.get_default_graph()
    • op,session,tensorgraph属性
  • 创建新图(创建一个单独的计算任务单元)

    • tf.Graph():新图对应的操作必须作用在上下文中
    • 上下文写法with g.as_default()
  • 会话Session

    • 会话就是运行图的一个资源类,运行的是默认的图,也可以单独运行指定图
    • 会话的资源包含如下资源,会话结束后需要关闭对应的资源,因此需要在上下文资源管理器中使用会话
      • tf.Variable(initial_value=None,trainable=True)

        • trainable=True表示在训练的过程中变量的值可以跟随训练而实时变化
      • tf.QueueBase

      • tf.ReaderBase

  • tensorflow可以分为前端系统和后端系统

    • 前端系统:定义图的结构(定义张量tensor,定义op等)
    • 后端系统:运行图

深度学习笔记_第3张图片

  • 会话的作用

    • 运行图的结构
    • 分配计算资源
    • 掌握资源:会话只可以运行其对应图中的资源
      • Session(graph=g)指定图
  • 重载运算符:session只可以运行op或tensor,不可以运行其他类型的数据,但是如果一个tensor或者op使用某个运算符和其他类型数据相加,则返回的为optensor类型

    a=tf.constant(3)
    b=4
    sum=a+b
    print(sum) #Tensor("add_8:0", shape=(), dtype=int32)
    
  • run方法

    • s.run(fetches,feed_dict=None,graph)
      • fetches:就是运行的op和tensor,例如run(sum)也可以run([a,b,run])
      • feed_dict:程序在执行的时候,不确定输入数据是什么,提前使用placeholder占位
        • session提供实时运行的数据
        • 应用场景,训练模型时,样本数量不确定时使用
    import tensorflow as tf
    #创建一个op,placeholder为占位对象,现在占据了一个n行3列的位置
    feature=tf.placeholder(dtype=tf.float32,shape=(None,3))#None为任意行数
    with tf.Session() as s:
        print(s.run(feature,feed_dict={feature:[[1,2,3],[4,5,6],[4,5,6]]}))
    #[[1. 2. 3.]
    #  [4. 5. 6.]
    #  [4. 5. 6.]]
    
  • 张量相关的api

    • 自动生成张量:

      • tf.zeros(shape=(3,2))
      • tf.ones()
      • tf.random_normal(shape,mean,stddev)
        • mean:平均值
        • stddev:方差
    • 改变类型:

      • tf.cast(x,dtype)
      arr=tf.zeros(shape=(4,5))
      rand_arr=tf.random_normal(shape=(3,4),mean=2,stddev=2)
      print(rand_arr)#Tensor("random_normal_1:0", shape=(3, 4), dtype=float32)
      
  • 变量

    • 概念:变量也是一种op,是一种特殊的张量,能够进行持久化存储(普通张量不行),变量的值为张量
    • api:tf.Varilable(initial_value,name,trainable)
      • initial_value:变量接收的值(张量)
    • 必须进行变量的显示的初始化,返回一个初始化变量的op:
      • init_op=tf.global_variables_initializer()
    import tensorflow as tf
    a=tf.constant([1,2,3,4,5])
    #创建了一个op
    var=tf.Variable(initial_value=a)
    #显示的初始化
    init_op=tf.global_variables_initializer()
    with tf.Session() as s:
        s.run(init_op)
        print(s.run(var))
        print(a.eval())
    #[1 2 3 4 5]
    # [1 2 3 4 5]
    
  • 模型保存与加载

    • 定义saverop
      • saver=tf.train.Saver()
    • 在会话中运行保存函数
      • saver.save(session,'path')
      • path:保存模型的路径,携带模型的名称
    • 在会话运行时加载模型:
      • if os.path.exists('./xxx/checkpoint'):
      • saver.restore(session,'path')

6.示例

  • 定义张量

    import tensorflow as tf
    #定义a,b两个tensor(张量)
    a=tf.constant(1.0)
    b=tf.constant(2.0)
    print(a,b)#Tensor("Const_2:0", shape=(), dtype=float32) Tensor("Const_3:0", shape=(), dtype=float32)
    
  • 调用add的函数(op)实现两数的相加

    import tensorflow as tf
    a=tf.constant(3)
    b=tf.constant(4)
    #定义一个op,相当于函数
    sum=tf.add(a,b)
    print(sum)#Tensor("Add:0", shape=(), dtype=int32)
    
  • 在会话中启动图

    import tensorflow as tf
    #定义a,b两个张量
    a=tf.constant(3)
    b=tf.constant(4)
    #定义一个op
    sum=tf.add(a,b)
    with tf.Session() as s:
        print(s.run(sum))
    #7
    
  • 获取图

    import tensorflow as tf
    a=tf.constant(3)
    b=tf.constant(4)
    sum=tf.add(a,b)
    with tf.Session() as s:
        print(s.run(sum))
        print(tf.get_default_graph())#返回当前的图
        print(sum.graph)
        print(a.graph)
        print(s.graph)
        
    #7
    # 
    # 
    # 
    # 
    
  • 创建新图

    import tensorflow as tf
    #创建一个新图
    g=tf.Graph()
    with g.as_default():
        #新图对应的操作
        d=tf.constant([1,2,3])
        c=tf.constant([4,5,6])
        sum_=tf.add(c,d)
        print(d.graph)
    a=tf.constant(3)
    b=tf.constant(4)
    sum=tf.add(a,b)
    with tf.Session() as s:
        print(s.run(sum))
        print(s.graph)
    
    #
    # 7
    # 
    
  • 实现会话运行指定图

    import tensorflow as tf
    #创建一个新图
    g=tf.Graph()
    with g.as_default():
        #新图对应的操作
        d=tf.constant([1,2,3])
        c=tf.constant([4,5,6])
        sum_=tf.add(c,d)
        print(d.graph)
    a=tf.constant(3)
    b=tf.constant(4)
    #定义一个op
    sum=tf.add(a,b)
    #指定g图
    with tf.Session(graph=g) as s:
        print(s.run(sum_))
        print(s.graph)
    # 
    # [5 7 9]
    # 
    

https://www.luffycity.com/

你可能感兴趣的:(机器学习笔记,深度学习,人工智能,神经网络)