简介

  TensorFlow是一个实现机器学习算法的接口,也是执行机器学习算法的框架。使用数据流式图规划计算流程,可以将计算映射到不同的硬件和操作系统平台。

主要概念

  TensorFlow的计算可以表示为有向图(directed graph),或者计算图(computation graph),计算图描述了数据的就算流程,其中每个运算操作(operation)作为一个节点(node),节点与节点之间连接称为边(edge)。在计算图变中流动(flow)的数据被称为张量(tensor),故称TensorFlow。

                                                                      

                              计算图实例[ref1]

  具体说,在一次运算中[ref2]:

    1. 使用图 (graph) 来表示计算任务:基本操作示例 ;

    2. 在被称之为 会话 (Session) 的上下文 (context) 中执行图:基本操作示例;

    3. 通过 变量 (Variable) 维护状态:基本操作示例。

代码实例

完整示例:

#!/usr/bin/pyton

'''
A simple example(linear regression) to show the complete struct that how to run a tensorflow create_data -> create_tensorflow_struct->start session
create date: 2017/10/20 ''' import tensorflow as tf
import numpy as np #create data x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1 + 0.3 ###create tensorflow structure begin##
Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
biases = tf.Variable(tf.zeros([1])) y = Weights*x_data + biases loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss) #when define variables, initialize must be called
#init = tf.initialize_all_variables()
### create tensorflow structure end ### sess = tf.Session()
#note: initialize_local_variables no more support in new version
if int((tf.__version__).split('.')[1]) < 12 and int((tf.__version__).split('.')[0]) < 1:
init = tf.initialize_all_variables()
else:
init = tf.global_variables_initializer() sess.run(init) for step in range(201):
sess.run(train)
if step % 20 == 0:
#session controls all opertions and varilables
print(step, sess.run(Weights), sess.run(biases)) sess.close()

  计算结果:

  

基本操作示例

  Session操作: 

#!/usr/bin/python

'''
A example to show how to call session create date: 2017/10/20
''' import tensorflow as tf #1. 定义一个操作
m1 = tf.constant([[2, 2]])
m2 = tf.constant([[3],
[3]])
dot_opeartion = tf.matmul(m1, m2) #2. 调用session实现
# 图画好以后,需要通过session来控制执行,让图来运行
# 另外每一个图中的操作都需要通过session来控制
# print result
#method1 use session
sess = tf.Session()
result = sess.run(dot_opeartion)
print(result)
sess.close() #method2 use session
with tf.Session() as sess:
result_ = sess.run(dot_opeartion)
print(result_) ##output
[[12]]
[[12]]

  

  Placeholder操作

#!/usr/bin/python

'''
A example to show how to call placehoder(类似于占位符) create date: 2017/10/20
''' import tensorflow as tf #1. 声明placehoder:待传入值
x1 = tf.placeholder(dtype=tf.float32, shape=None)
y1 = tf.placeholder(dtype=tf.float32, shape=None)
z1 = x1 + y1 x2 = tf.placeholder(dtype=tf.float32, shape=None)
y2 = tf.placeholder(dtype=tf.float32, shape=None)
z2 = tf.matmul(x2, y2) #2. 调用session,传入值
with tf.Session() as sess:
#when only one operation to run
#feed_dict: input the values into placeholder
z1_value = sess.run(z1, feed_dict={x1: 1, y1:2}) # when run multiple operaions
#run the two opeartions together
z1_value, z2_value = sess.run(
[z1, z2],
feed_dict={
x1:1, y1:2,
x2:[[2],[2]], y2:[[3,3]]
}
)
print(z1_value)
print(z2_value)

  

  Variable操作

#!/usr/bin/python

'''
A example to show how to call variables create date: 2017/10/20
''' import tensorflow as tf # 1.stuct
#our first variable in the "global_variable" set
var = tf.Variable(0) add_operation = tf.add(var,1) #把add_operation值给var
update_operation = tf.assign(var, add_operation) # once define variables, you have to initialize them by doing this
init = tf.global_variables_initializer() # 2. call session
with tf.Session() as sess:
sess.run(init)
for count in range(3):
sess.run(update_operation)
print(sess.run(var))

--------------------------------------

说明:本列为前期学习时记录,为基本概念和操作,不涉及深入部分。文字部分参考在文中注明,代码参考莫凡

TensorFlow简易学习[1]:基本概念和操作示例的更多相关文章

  1. TensorFlow简易学习[3]:实现神经网络

    TensorFlow本身是分布式机器学习框架,所以是基于深度学习的,前一篇TensorFlow简易学习[2]:实现线性回归对只一般算法的举例只是为说明TensorFlow的广泛性.本文将通过示例Ten ...

  2. TensorFlow简易学习[2]:实现线性回归

    上篇介绍了TensorFlow基本概念和基本操作,本文将利用TensorFlow举例实现线性回归模型过程. 线性回归算法 线性回归算法是机器学习中典型监督学习算法,不同于分类算法,线性回归的输出是整个 ...

  3. Spring的入门学习笔记 (AOP概念及操作+AspectJ)

    AOP概念 1.aop:面向切面(方面)编程,扩展功能不通过源代码实现 2.采用横向抽取机制,取代了传统的纵向继承重复代码 AOP原理 假设现有 public class User{ //添加用户方法 ...

  4. tensorflow学习笔记——常见概念的整理

    TensorFlow的名字中已经说明了它最重要的两个概念——Tensor和Flow.Tensor就是张量,张量这个概念在数学或者物理学中可以有不同的解释,但是这里我们不强调它本身的含义.在Tensor ...

  5. 深度学习框架Tensor张量的操作使用

    - 重点掌握基本张量使用及与numpy的区别 - 掌握张量维度操作(拼接.维度扩展.压缩.转置.重复……) numpy基本操作: numpy学习4:NumPy基本操作 NumPy 教程 1. Tens ...

  6. tensorflow笔记:流程,概念和简单代码注释

    tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果.这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一 ...

  7. (转) TensorFlow深度学习,一篇文章就够了

    TensorFlow深度学习,一篇文章就够了 2016/09/22 · IT技术 · TensorFlow, 深度学习 分享到:6   原文出处: 我爱计算机 (@tobe迪豪 )    作者: 陈迪 ...

  8. Oracle RAC学习笔记:基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

  9. Java IO学习笔记:概念与原理

    Java IO学习笔记:概念与原理   一.概念   Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...

随机推荐

  1. C语言/原子/编译,你真的明白了吗?

    说到原子,类似于以下的代码可能人人都可以看出猫腻. #include <stdio.h> #include <pthread.h> ; void* mythread(void* ...

  2. PPT排版细节,写给大家看的设计书,完美总结

    原创作者:陈玓玏 相信每一位小宝贝在工作中都会被老板用PPT虐无数遍,虐到自己怀疑人生.奈何在网上随手一搜,出现的各类招聘要求都躲不开"熟练掌握PPT制作",尤其是各类科技公司.咨 ...

  3. C# 7.0 特性

    在昨天WR发布了vs17,vs17可以使用C#7.0,在之前,我写有一篇博客,关于C#7.0,参见:http://lindexi.oschina.io/lindexi/post/C-7.0/ 但是WR ...

  4. maven的介绍

    刚来通信行业的国企上班,面试的时候很尴尬的问道"maven是干什么的?"""maven是项目管理工具吗?是怎么管理的?(理解类似于协同等办公OA一样的软件了)& ...

  5. go基础编程 day-2

    Go的常亮 关键字: Const Go常亮的多个定义: // 定义常亮的关键字 const // 定义多个常亮 const( PI = 3.14 const1 = " const2 = co ...

  6. JavaScript--我发现,原来你是这样的JS(引用类型不简单,且听我娓娓道来)

    一.介绍 没错,这是第五篇,到了引用类型,这次要分成两次博文了,太多内容了,这是前篇,篇幅很长也很多代码,主要讲引用类型和常用的引用类型,代码试验过的,老铁没毛病. 坚持看坚持写,不容易不容易,希望大 ...

  7. 使用Angularjs和Vue.js对比

    使用Angularjs和Vue.js对比 之前项目都是使用Angularjs,(注明此处主要讲Angularjs 1)在初步使用Vue.js后做一个简答的对比笔记. 首先从理论上简单说一下各自的特点, ...

  8. LeetCode 562. Longest Line of Consecutive One in Matrix(在矩阵中最长的连续1)$

    Given a 01 matrix M, find the longest line of consecutive one in the matrix. The line could be horiz ...

  9. 【问题排查】fastjson线上排坑记

    前言 版本上线时发现fastjson的toString方法的返回的字符串与与之前版本的toString方法返回的字符串不相同,这导致依赖toString进行md5计算所得到的结果不相同,更进一步导致其 ...

  10. js接收html传值

    var obj = document.getElementById("orgName");无法获取输入框的值,获取的值为[object HTMLInputElement].用var ...