DeepLearning | Tensorflow编程基础:Session、Constant、Variable、Tensor、Placeholder、OP

3人阅读 评论(0) 收藏 举报
分类:

转载地址https://blog.csdn.net/liangjun_feng/article/details/79723048

Tensorflow的运行方式

Tensorflow作为谷歌开源的深度学习框架,受到众多的人工智能开发人员欢迎。Tensorflow的数据控制单元,张量Tensor是一个可以定义为任意维度的数据,张量的阶Tensor’s rank就是张量的维度,例如:

零阶张量: 1   一个标量
一阶张量: [1,2,3]    一个向量 shape 3
二阶张量: [[1,2,3],[4,5,6]]   一个矩阵 shape 2x3
三阶张量: [[[1,2,3]],[[4,5,6]]]   shape:2x1x3
Tensorflow的编程主要分为两步,第一步构造计算图(computational Graph),第二步运行计算图。那么计算图是什么呢?

计算图是一系列由计算操作抽象出来的节点构成的结构,张量(Tensor)在这些节点之间流动运行,由此称该框架为Tensorflow。接下来我们就来介绍一下Tensorflow的基本概念

Constant常量

要使用Tensorflow我们首先需要导入该框架

import tensorflow as tf 

Tensorflow中一个基础的节点类型就是constant,常量节点

node_A = tf.constant(10,tf.float32)
node_B = tf.constant(11,tf.int32)

所有的常量类型在定义时,就已经赋予了数值,而且其数值在后面的运行中是无法改变的。

Session会话

如果我们直接输出上面定义的两个节点时,例如

print(node_A,node_B)

我们会得到下面的结果

Tensor("Const:0", shape=(), dtype=float32) 
Tensor("Const_1:0", shape=(), dtype=float32)

这里输出的并不是我们想要的10和11,想要输出运行一个节点的结果,必须在一个会话Session中运行计算图,Tensor flow中的session很好的封装了其运行时的状态和控制,接下来我们定义一个会话,输出两个节点的值

sess = tf.Session()
a,b = sess.run([node_A,node_B])
print(a,b)

输出如下:

10.0 11.0

Op计算节点

上面我们定义了两个常量节点和会话,并输出了节点的值,我们可以通过定义一些计算操作(Operation、Op)节点,构建更加复杂的计算

加法:

node_C = tf.add(node_A,node_B)
print(sess.run(node_C)) 

输出为

21.0

乘法:

node_D = tf.multiply(node_A,node_B)
print(sess.run(node_D)) 

输出为

110.0

Placehoder占位符

上面我们已经熟悉了常量类型以及一些运输符号的操作,Tensorflow的计算图还可以使用占位符placeholder参数化的从外部输入数据,简单来说placehold的作用就是给之后输入的值提前占位,设置这个结构的存在。

# 这里是构造计算图的部分
a=tf.placeholder(tf.float32)  
b=tf.placeholder(tf.float32)  
adder_node=a+b  
#运行计算图  
print("adder_node:",adder_node)  
print(sess.run(adder_node,{a:3,b:4.5}))  
print(sess.run(adder_node,{a:[1,3],b:[2,4]}))  

输出结果为:

adder_node: Tensor("add:0", dtype=float32)
7.5
[ 3.  7.]

在我们构建一个神经网络时,通常会为网络的输入输出构建一个placeholder占位符

Variable变量

在网络模型中,我们不光有常量类型,计算操作、输入输出占位符等更多的是大量的变量类型,模型具有可训练能力,需要在一次次训练中修正计算图,使对于同样的输入得到新的输出。变量variable允许我们为计算图添加可变的训练参数

例如,我们构造一个线性模型

定义图结构
W=tf.Variable([.3],tf.float32)  
b=tf.Variable([-.3],tf.float32)  
x=tf.placeholder(tf.float32)  
linear_model=W*x+b  

运行计算图
init = tf.global_variables_initializer()  
sess.run(init)  
print(sess.run(linear_model,{x:[1,2,3,4]}))  
这里的初始化是必要的,与常量类型的定义不同,所有的变量类型在定义时都不会赋予初始值,只有在执行初始化操作时,值才会被赋予变量

上述代码的输出为:

[ 0.          0.30000001  0.60000002  0.90000004]

查看评论

TensorFlow 学习积累(1):variable 和 placeholder

variable 和 placeholder 的区别
  • u014546828
  • u014546828
  • 2017-09-13 09:46:52
  • 632

tensorflow中常量(constant)、变量(Variable)、占位符(placeholder)和张量类型转换reshape()

常量 constant tf.constant()函数定义: def constant(value, dtype=None, shape=None, name="Const", v...
  • dcrmg
  • dcrmg
  • 2018-01-09 21:52:33
  • 734

TensorFlow Variable, Placeholder 以及激励函数学习小结

TensorFlow Variable#encoding=utf-8 import tensorflow as tfstate = tf.Variable(0,name='counter') #初始值...
  • qq_33374476
  • qq_33374476
  • 2017-08-05 21:07:31
  • 385

Tensorflow中关于Tensor和Variable的理解

刷课过程中思考到Variable和Tensor之间的区别,尝试发现在如下代码中:a = tf.Variable(tf.ones(1)) b = tf.add(a,tf.ones(1))a是Variab...
  • silent56_th
  • silent56_th
  • 2017-07-20 20:56:28
  • 2283

TensorFlow 辨异 —— tf.placeholder 与 tf.Variable

二者的主要区别在于: tf.Variable:主要在于一些可训练变量(trainable variables),比如模型的权重(weights,W)或者偏执值(bias);声明时,必须提供初始值; 名...
  • lanchunhui
  • lanchunhui
  • 2017-03-12 23:51:47
  • 19812

tensorflow快速整体认识

用法说明: 请类比管道构建来理解计算图的用法 构造阶段(construction phase):组装计算图(管道) 计算图(graph):要组装的结构。由许多操作组成。 操作(...
  • rytyy
  • rytyy
  • 2017-09-19 16:15:15
  • 156

tensorflow框架学习(一)placeholder 与variable

1. placeholder —占位符参考 http://www.tensorfly.cn/tfdoc/api_docs/python/io_ops.html placeholder, 译为占位符,官...
  • leiting_imecas
  • leiting_imecas
  • 2017-05-05 23:48:37
  • 3298

tensorflow学习笔记(一):基本知识之tensor,operation和Session

1、tensor之———变量(variable)、常量(constant)、占位符(Placeholder) 2、Session的简介 3、Session中run的使用以及fetch和feed 4、交...
  • woaidapaopao
  • woaidapaopao
  • 2017-06-05 22:49:32
  • 2381

TensorFlow学习(二):变量常量类型

更新时间:2017.2.27 tensorflow 1.0出来了,API和以前有了一些不一样,所以这里把把之前的代码迁移到新的上面去。 格式有问题,慢慢调….一.概览还记的上节TensorFlow...
  • xierhacker
  • xierhacker
  • 2016-11-13 21:03:52
  • 36545

TensorFlow入门(二)——基本用法

TensorFlow: 使用图 (graph) 来表示计算任务 在被称之为 会话 (Session) 的上下文 (context) 中执行图 使用 tensor 表示数据 通过 变量 (Variabl...
  • PinkRiverside
  • PinkRiverside
  • 2017-06-04 17:10:46
  • 765
    个人资料
    持之以恒
    等级:
    访问量: 2453
    积分: 213
    排名: 34万+
    最新评论