Tensorflow初入门

Posted fromzore

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tensorflow初入门相关的知识,希望对你有一定的参考价值。

想要使用Tensorflow必须先要安装上这个,我用的是win10系统,之前也装了python环境

所以我就直接使用pip install tensorflow命令安装上就可以使用了。

 

想要使用tensorflow,就必须明白tensorflow:

1、使用图(graph)来表示计算任务。

2、在被称之为为会话(session)的上下文(context)中执行图。

3、使用tensor表示数据。

4、通过变量(Variable)维护状态。

5、使用feed和fetch可以为任意的操作赋值或者从其中获取数据。

 

tensorflow是一个编程系统,使用图来表示计算任务。途中的节点被称为op。一个op获得0个或多个tensor,执行计算,产生0个或多个tensor。每个tensor是一个类型化的多为数组。一个tensorflow图描述了计算的过程,为了进行计算,图必须在会话里被启动。会话将图的op分发到诸如cpu或gpu之类的设备上,同时提供执行op的方法。这些方法执行后,将产生的tensor返回。在Python中,返回的是numpy ndarray对象。

 

tensorflow程序通常被组织成一个构建和一个执行阶段。在构建阶段,op的执行步骤被描述成一个图。在执行阶段,使用会话执行执行图中的op。例如,通常在构建阶段创建一个图来表示和训练神经网络,然后在执行阶段反复执行图中的训练op。

构建图

tensorflow python库有一个默认图,op构造器可以为其增加节点。

下面我们来构建一个图,并执行它

import tensorflow as tf

#建立computational graph
node1=tf.constant(3.,tf.float32)
node2=tf.constant(4.5)
tensor=tf.add(node1,node2)

print(node1)
print(node2)

#执行computational graph
session=tf.Session()
print(session.run(node1))
print(session.run(node2))
print(session.run(tensor))

session.close()

运行结果是这样的

技术分享图片

由此可见我们创建node1与node2其实是创建了两个tensor结点,Session对象在使用完之后需要关闭以释放资源。除了显式的条用close外,也可以使用“with”代码块来自动完成关闭工作。

with tf.Session() as session:
    result=session.run(node1)
    print(redult)

在实现上,tensorflow将图形定义转换成分布式执行的操作,以充分利用可用的计算机资源。

 

交互式使用

文档中的Python示例使用一个会话Session来启动图,并调用Session.run()方法执行操作。为了便于使用注入IPython之类的Python交互环节,可以使用InteractiveSession代替Session类,使用Tensor.eval()和Operation.run()方法代替Session.run()。这样可以避免使用一个变量来持有会话。

#进入一个交互式Tensorflow会话
import tensorflow as tf
 
sess=tf.InteractiveSession()

x=tf.Variable([1.0,2.0])
a=tf.constant([3.0,3.0])

#使用Operation.run()方法初始化x
x.initializer.run()

#增加一个剪发op,从x减去a,运行减法结果,减去输出结果
sub=tf.sub(x,a)
print(sub.eval())

 

Tensor

tensorflow程序使用tensor数据结构来代表所有的数据,计算图中,操作间传递的数据都是tensor。你可以把tensorflow tensor看作是一个n维的数组或者列表。一个tensor包含一个静态类型rank,和一个shape。

变量

Variables变量维护图执行过程中的状态信息。下面的例子演示了如何使用变量实现一个简单的计数器。

import tensorflow as tf
 
#创建一个变量,初始化维标量0
state=tf.Variable(0,name="counter")

#创建一个op,其作用是使state增加1
one=tf.constant(1)
new_value=tf.add(state,one)
update=tf.assign(state,new_value)

#启动图后变量不需经过初始化

#首先必须增加一个初始化‘op’到图中
init_op=tf.initialize_all_variables()

启动图,运行op
with tf.Session() as sess:
    sess.run(init_op)
    print(sess.run(state))
    for _ in range(3):
        sess.run(update)
        print(sess.run(state))

运行结果如下

技术分享图片

代码中的assign()操作是图所描绘的表达式的一部分,正如add()操作一样,所以在调用run()执行表达式之前,不会进行真正执行的赋值操作。

我们通常会将一个统计模型中的参数表示为一组变量。例如,你可以将一个神经网络的权重作为某个变量存储在一个tensor中。在训练过程中,通过重复运行训练图,更新这个tensor。

 

Fetch

为了取回操作的输出内容,可以在使用Session对象的run()调用执行图时,传入一些tensor,这些tensor会帮助你取回结果。在之前我们只取回了单个节点state,但是你也可以取回多个tensor:

import tensorflow as tf

input1=tf.constant(3.0)
input2=tf.constant(2.0)
input3=tf.constant(5.0)
intermed=tf.add(input2,input3)
mul=tf.multiply(input1,intermed)#multiply(),两个数相乘

with tf.Session() as sess:
    result=sess.run([mul,intermed])
    print(result)

输出结果如下

技术分享图片

需要获取多个tensor值,在op的依次运行中一起获得(而不是之歌去获取tensor)。也就是我们可以将两个节点和在一块输出。

 

feed

上述示例在计算图中引入了tensor,以常量或者变量的形式存储。Tensorflow还提供了feed机制,该机制可以临时替代图中的任意操作中的tensor可以对图中任何操作提交补丁,直接插入一个tensor。

feed使用一个tensor值临时,替换一个操作的输出结果。你可以提供feed数据作为run()调用的参数。feed旨在调用它的方法内有效,方法结束,feed就会小时。最常见的用例是将某些特殊的操作指定为“feed”操作,标记的方法是使用tf.placeholder()为这些操作创建占位符。

import tensorflow as tf

input1=tf.placeholder(tf.float32)
input2=tf.placeholder(tf.float32)
output=tf.multiply(input1,input2)

with tf.Session() as sess:
    print(sess.run([output],feed_dict={input1:[7.],input2:[2.]}))

输出的结果是这样的

技术分享图片

 



以上是关于Tensorflow初入门的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow.org教程笔记 DataSets 快速入门

Tensorflow框架初尝试————搭建卷积神经网络做MNIST问题

tensorflow serving初体验

tensorflow新手必看,tensorflow入门教程,tensorflow示例代码

MNIST实例-Tensorflow 初体验

深度学习之TensorFlow安装与初体验