我爱编程

tensorflow环境搭建&基本概念

2018-01-08  本文已影响0人  skullfang

前言

本文只是tensorflow的简单介绍。

安装

很简单直接

pip install tensorflow

就可以了。
如果喜欢用Pycharm ,可以直接按照下包的流程把它下载下来即可。
验证安装:hello world程序

import tensorflow as tf
hello=tf.constant("hello ,world") 
sess=tf.Session()
print(sess.run(hello))
sess.close()

工作方式

tensorflow 的名字已经说明了它最重要的两个概念——Tensor和Flow。

Tensor(张量)

在tensorflow中所有的数据都是通过张量进行表示的,在这里可以把张量理解为一个数据结构。
它既可以表示常量也可以表示为变量和多维度矩阵。
在Tensorflow中 一个数 就是一个0阶张量,也称做标量(scalar)
那么一个向量(一维数组)就是一个1阶张量。
那么N维数组就是N阶张量.
既然它是一个数据结构的话那就有自己的属性。张量有三个属性。名字(name),维度(shape)和类型(type)

import tensorflow as tf
a=tf.constant(1,name="a")
b=tf.constant([1,2],name="b")
c=tf.constant([[1],[2]],name="c")

print a
print b
print c

结果是:
Tensor("a_1:0", shape=(), dtype=int32)
Tensor("b_2:0", shape=(2,), dtype=int32)
Tensor("c:0", shape=(2, 1), dtype=int32)

shape=() 就说明它是个标量。
shape=(2,)说明它是个一维数组长度为2
shape=(2,1)说明它是一个二维数组

tensor显示指定数据的类型其实就是在数据计算的时候做类型检查。
Tensorflow 支持14种不同的类型,主要包括了小数(tf.float32,tf.float64)整数(tf.int8、tf.int16、tf.int32、tf.int64、tf.uint8)、布尔类型(tf.bool)、复数(tf.complex64、tf.complex128)

Flow(流)

我们把所有的数据理解成一个节点,然而每个数据的计算无非就是这个节点到另外一个节点的流向过程。例如
执行c=a+b
我们可以理解为a和b的数据经过add这个操作流向了C。flow也就很形象的去解释了这个概念。


image.png

计算图

结合上面的 张量和流的概念,我们甚至可以把上面的c=a+b理解为一个节点组成的图。

image.png
没错,这就是Tensorflow中非常重要的一个概念计算图。上面的是最小的图。经过我们设计变化,图会变得很大。但是无非也就是输入流向计算过程流向输出仅此而已。
20170902203655640.gif

计算图的使用

根据上述概念可以知道我们的tensorflow就是一个一个的tensor。一条一条的flow以及一个个的op 组成的图。所以我们使用tensorflow需要两步。

设计图

用实际的例子来看,就是之前的c=a+b
我们需要首先设计图。

#定义常量op
a=tf.constant(2)
b=tf.constant(3)

#定义一个op操作
add=tf.add(a,b)

#定义一个占位变量(因为c不知道等于多少)
c=tf.placeholder(tf.int16)

ok这就是我们画出的那张图的各个节点和操作。

启动图(会话)

会话也叫session
在tensorflow中session可以管理运行时候所有的资源。也就是相当于前面都是初始化、必须在会话里面进行运行。代码很简单。

#定义一个会话
sess=tf.Session()
c=sess.run(add)
print c
sess.close()

输出是5.
如果这样写。最后一个必须显式的关闭这个会话,然而当程序一场推出的时候,关闭会话的那条命令可能不会执行从而导致资源泄漏。我们可以使用python的上下文管理器使用会话。

with tf.Session() as sess:
    c=sess.run(add)
    print c

代码

# -*- coding: utf-8 -*-
# @Time    : 2017/12/4 下午3:35
# @Author  : SkullFang
# @Email   : yzhang.private@gmail.com
# @File    : demo1.py
# @Software: PyCharm
import tensorflow as tf

#定义常量op
a=tf.constant(2)
b=tf.constant(3)

#定义一个op操作
add=tf.add(a,b)

#定义一个占位变量(因为c不知道等于多少)
c=tf.placeholder(tf.int16)

# #定义一个会话

with tf.Session() as sess:
    c=sess.run(add)
    print c
上一篇下一篇

猜你喜欢

热点阅读