Python神经网络1之TensorFlow

深度学习介绍

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

特征提取方面

请添加图片描述

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

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

请添加图片描述

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

算法代表

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

深度学习框架介绍

框架名主语言从语言灵活性上手难易开发者
TensorflowC++cuda/pythonGoogle
PyTorchpythonC/C++中等FaceBook
CaffeeC++cuda/python/Matlab一般中等贾杨清
MXNetc++cyda/R/julia中等李沐和陈天奇等
Torchluac/cuda中等FaceBook
TheanopythonC++/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();              

请添加图片描述

图与TensorBoard

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

图相关操作

默认图

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

  1. 调用tf.get_default_graph()访问,
  2. op,sess,都含有graph属性,默认都在一张图中请添加图片描述
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;                         

请添加图片描述

创建图
  • 通过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;

请添加图片描述

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)

请添加图片描述
请添加图片描述
在这里插入图片描述

OP

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

  1. 常见OP
    请添加图片描述
操作函数操作对象
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)

请添加图片描述
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值