Python神经网络1之TensorFlow

Python神经网络1之TensorFlow

  • 深度学习介绍
    • 深度学习与机器学习的区别
      • 特征提取方面
      • 数据量和计算性能方面要求
      • 算法代表
    • 深度学习框架介绍
      • TensorFlow的安装
  • TensorFlow框架介绍
    • TensorFlow结构分析
      • 案例加法展示
    • 图与TensorBoard
      • 图相关操作
        • 默认图
        • 创建图
      • TensorBoard:可视化学习
      • OP

深度学习介绍

深度学习与机器学习的区别

特征提取方面

Python神经网络1之TensorFlow_第1张图片

  1. 机器学习的特征工程步骤是要靠手动完成的,需要大量领域的专业知识
  2. 深度学习通常用多个层组成,它们通常将更简单的模型组合在一起,将数据从一层传递到另一层来构建更复杂的模型,通过训练大量数据自动得出模型,不需要人工特征提取环节

数据量和计算性能方面要求

Python神经网络1之TensorFlow_第2张图片

  1. 深度学习需要大量的训练数据集
  2. 训练深度神经网络需要大量的算力

算法代表

  1. 机器学习 -朴素贝叶斯、决策树
  2. 深度学习 -神经网络

深度学习框架介绍

框架名 主语言 从语言 灵活性 上手难易 开发者
Tensorflow C++ cuda/python Google
PyTorch python C/C++ 中等 FaceBook
Caffee C++ cuda/python/Matlab 一般 中等 贾杨清
MXNet c++ cyda/R/julia 中等 李沐和陈天奇等
Torch lua c/cuda 中等 FaceBook
Theano python C++/cuda 蒙特利尔理工学院

总结:

  1. 最常用的框架当数TensorFlow和Pytorch,而Caffee和Caffee2次之
  2. PyTorch和Torch更适用于学术研究,TensorFlow,Caffee,Caffee2更适用于工业界的生产环境部署
  3. Caffee适用于处理静态图像,Torch和PyTorch更适用于动态图像,TensorFlow在两种情况下都很实用
  4. TensorFlow和Caffee2可在移动端实用

TensorFlow的安装

  1. CPU与GPU的对比
    CPU:核芯的数量更少,但是每一个核芯的速度更快,性能更强,更适用于处理连续性的任务
    GPU:核芯的数量更多,但是每一个核芯的处理速度较慢,更适用于并行任务
  2. CPU版本
    macOS安装

pip install tensorflow==1.8 -i https://mirrors.aliyun.com/pypi/simple

TensorFlow框架介绍

TensorFlow结构分析

TensorFlow程序通常被组织成一个构建图阶段和一个执行图阶段
在构建阶段,数据与操作的执行步骤被描述成一个图
在执行阶段,使用会话知心构建好的图中的操作

  • 构建图----类似流程图,定义数据和操作
  • 执行图----调用各方资源,将定义好的数据和操作运行起来

图和会话:

  1. 图:这是TensorFlow将计算表示为指令之间的依赖关系的一种表示法
  2. 会话:TensorFlow跨一个或多个本地或远程设备运行数据流图的机制
  3. 张量:TensorFlow中的基本数据对象
  4. 节点:提供图当中执行的操作
    TensorFlow是一个采用数据流图,用于数值计算的开源框架
    节点在图中表示数学操作,线则表示在节点间相互联系的多维数据数组,即张量

案例加法展示

pycharm上主流是2.x版本的,添加
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
这两行代码将2.x版本变成1.x版本来学习

import tensorflow.compat.v1 as tf     
tf.disable_v2_behavior()              
import os                             
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
                                      
                                      
def tensorflow_demo01():              
    # Tensorflow 实现加法运算               
    a=tf.constant(2);                 
    b=tf.constant(3);                 
    c=a+b;                            
    print(c)                          
    #开启会话                             
    with tf.Session() as sess:        
        c_t=sess.run(c)               
        print("c_value:",c_t)         
                                      
    return None;                      
                                      
if __name__=='__main__':              
    tensorflow_demo01();              

Python神经网络1之TensorFlow_第3张图片

图与TensorBoard

简单来说,图结构 就是 图数据+操作

图相关操作

默认图

通常TensorFlow会默认帮我们创建一张图
查看默认图的两种方法:

  1. 调用tf.get_default_graph()访问,
  2. op,sess,都含有graph属性,默认都在一张图中Python神经网络1之TensorFlow_第4张图片
def graph_tensorflow_demo02():           
    a=tf.constant(2)                     
    b=tf.constant(3)                     
    c=a+b                                
    print("c:",c)                        
                                         
    #查看图属性                               
    #方法一:调用方法                            
    g_graph=tf.get_default_graph()       
    print("g的图属性:",g_graph)              
                                         
    with tf.Session() as sess:           
        c_t=sess.run(c)                  
        print("c_t:",c_t)                
        #方法二:查看属性                        
        print("session的图属性:",sess.graph) 
        print("a_g:",a.graph)            
        print("b_g:",b.graph)            
                                         
    return None;                         

Python神经网络1之TensorFlow_第5张图片

创建图

  • 通过tf.Graph()自定义创建图
  • 如果要在这张图中创建OP,典型用法就是使用tf.Graph.as_default()上下文管理器

不能在自定义图中运行数据和操作

def diy_graph_tensorflow_demo03():
    #自定义图
    new_Graph=tf.Graph()

    a=tf.constant(20)
    b=tf.constant(30)
    c=a+b

    #在自己的图中定义数据和操作
    with new_Graph.as_default():
        a_new=tf.constant(20)
        b_new=tf.constant(30)
        c_new=a_new+b_new;
        print("c_new:\n",c_new)
        print("a_graph:\n",a_new.graph)
        print("b_graph:\n",b_new.graph)

    #开启会话
    with tf.Session() as sess:
        c_value=sess.run(c)
        print("c_value:\n",c_value)
    #开启new_Graph会话
    with tf.Session(graph=new_Graph) as new_sess:
        c_new_value=new_sess.run(c_new)
        print("c_new_value:\n",c_new_value)

    return None;

Python神经网络1之TensorFlow_第6张图片

TensorBoard:可视化学习

实现程序可视化过程:

  1. 数据序列化-events文件
    tf.summary.FileWriter(path,graph=sess.graph)
  2. 启动TensorBoard
    tensorboard --logdir=path
def demo03():
    a=tf.constant(10)
    b=tf.constant(20)
    print("a\n", a)
    print("b\n", b)
    c=a+b

    #开启会话
    with tf.Session() as sess:
        c_value=sess.run(c)
        print("c_value:\n",c_value)
        tf.summary.FileWriter("./tmp/summary",graph=sess.graph)

Python神经网络1之TensorFlow_第7张图片
Python神经网络1之TensorFlow_第8张图片
Python神经网络1之TensorFlow_第9张图片

OP

数据:Tensor对象
操作:Oeration对象 -OP

  1. 常见OP
    Python神经网络1之TensorFlow_第10张图片
操作函数 操作对象
tf.constant(Tensor对象) 输入Tensor对象 —Constant -输出 Tensor对象
tf.add(Tensor对象1,Tensor对象2) 输入Tensor对象1,Tensor对象2 —Add对象 -输出 Tensor对象3
  1. 指令名称
    一张图对应一个命名空间
    tf.Graph对象为其包含的tf.Operation对象定义的一个命名空间。用户可以指定描述性名称,使程序阅读起来更轻松
def demo04():
    a=tf.constant(1,name="a")
    b=tf.constant(2,name="b")
    print("a\n",a)
    print("b\n",b)
    c=tf.add(a,b,name="c")
    print("c:\n",c)

        with tf.Session() as sess:
        c_value=sess.run(c)
        tf.summary.FileWriter("./tmp/summary",graph=sess.graph)
        print("c_value:\n",c_value)

Python神经网络1之TensorFlow_第11张图片
Python神经网络1之TensorFlow_第12张图片

你可能感兴趣的:(神经网络,python)