zoukankan      html  css  js  c++  java
  • 人工智能-深度学习(2)TensorFlow安装及基本使用(学习笔记)

    一、TensorFlow 简介

    TensorFlow 是 Google 开源的一款人工智能学习系统。为什么叫这个名字呢?

    Tensor 的意思是张量,代表 N 维数组;Flow 的意思是流,代表基于数据流图的计算。

    把 N 维数字从流图的一端流动到另一端的过程,就是人工智能神经网络进行分析和处理的过程。

    话说在 Android 占领了移动端后,Google开源了 TensorFlow,希望占领 AI 端。

    TF的特点是可以支持多种设备,大到 GPU、CPU,小到平板和手机都可以跑起来 TF。

    而且 TF 的使用很方便,几行代码就能开始跑模型,这让神经网络的入门变得非常简单。

    二、TensorFlow 的安装

    因为精力有限,此处只介绍在windows10平台上的安装,其他平台的安装方法google上一抓一大把。
    我安装的方法是用最简单粗暴的方法:Anaconda
    1.在Anaconda官网上下载64位
    这里写图片描述
    (注意自己的python的版本)
    在安装过程注意的一点是勾选如下图中的两个选项,其他的默认即可:
    这里写图片描述

    2.安装成功后打开Anaconda,切换到environment功能栏,可以看到很多的工具包,搜索Tensorflow,勾选上,然后点击Apply,进行安装即可。
    这里写图片描述

    三、TensorFlow的基础运算

    在搞神经网络之前,先让我们把 TensorFlow 的基本运算,也就是加减乘除搞清楚。

    首先,TensorFlow 有几个概念需要进行明确:

    • 图(Graph):用来表示计算任务,也就我们要做的一些操作。

    • 会话(Session):建立会话,此时会生成一张空图;在会话中添加节点和边,形成一张图,一个会话可以有多个图,通过执行这些图得到结果。

    如果把每个图看做一个车床,那会话就是一个车间,里面有若干个车床,用来把数据生产成结果。

    • Tensor:用来表示数据,是我们的原料。

    • 变量(Variable):用来记录一些数据和状态,是我们的容器。

    • feed和fetch:可以为任意的操作(arbitrary operation ) 赋值或者从其中获取数据。相当于一些铲子,可以操作数据。

    形象的比喻是:把会话看做车间,图看做车床,里面用 Tensor 做原料,变量做容器,feed 和 fetch 做铲子,把数据加工成我们的结果。

    创建图和运行图

    下面我们创建一个图,并在 Session 中执行它,不用担心看不懂,每句代码都会注释,只有有编程基础,都能 OK:

    #引入TensorFlow包
    import tensorflow as tf
    #创建一个常量v1,它是1*2的矩阵
    v1=tf.constant([[2,3]])
    #创建一个常量v2,它是2*1的矩阵
    v2=tf.constant([[2],[3]])
    #创建一个矩阵乘法,这里要注意的是,创建了乘法后,是不会立即执行的,要在会话中执行才行
    product=tf.matmul(v1,v2)
    
    #打印,得到的不是乘法的结果,而是得到乘法本身
    print(product)
    
    #定义一个会话
    sess=tf.Session()
    #运行乘法,得到结果
    result=sess.run(product)
    #打印结果
    print(result)
    #关闭会话
    sess.close()

    上面就是用 TensorFlow 进行了一个最简单的矩阵乘法。

    创建一个变量,并用 for 循环对变量进行赋值操作

    #创建一个变量num
    num = tf.Variable(0,name = "count")
    #创建一个加法操作,把当前的数字加10
    new_value = tf.add(num,10)
    #创建一个赋值操作,将new_value的值赋值给num
    op = tf.assign(num,new_value)
    
    #使用这种写法,在运行完毕以后,会话自动关闭
    with tf.Session() as sess:
        #初始化变量
        sess.run(tf.global_variables_initializer())
        #打印num的初始值
        print(sess.run(num))
        #创建一个for循环,每次给num+10,并打印出来
        for i in range(5):
            sess.run(op)
            print(sess.run(num))
    

    可以看到,除了变量创建稍微麻烦一些和必须建立 session 来运行,其他的操作基本和普通Python一样。

    通过 feed 设置 placeholder 的值

    有的时候,我们会在声明变量的时候不赋值,计算的时候才进行赋值,这个时候 feed 就派上用场了

    
    #创建一个变量占位符input1
    input1 = tf.placeholder(tf.float32)
    input2 = tf.placeholder(tf.float32)
    
    #创建一个乘法操作,把input1和input2相乘
    new_value=tf.multiply(input1,input2)
    
    #使用这种写法,运行完毕后,会话会自动关闭
    with tf.Session() as sess:
    
        #打印new_value的值,在运算时,用feed设置两个输入的值
        print(sess.run(new_value,feed_dict={input1:23.0,input2:11.0}))
    
  • 相关阅读:
    CMD命令点滴
    Android之Service的使用
    JavaScript第一章
    Android之BroadcastReceiver的使用
    Android之短信验证
    HTML学习(一)
    新一代联合国秘书长?
    粗茶淡饭
    Access里的Case效果 解决“IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败!”问题!
    利用接口实现多种数据库类型的灵活更换
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387036.html
Copyright © 2011-2022 走看看