Tensorflow_入门学习_1
1.0 TensorFlow graphs
Tensorflow是基于graph based computation:
如:
a=(b+c)∗(c+2)
可分解为
d=b+c
e=c+2
a=d∗e

这样做的目的在于,d=b+c,e=c+2,这两个式子就可以并行地计算。
2.0 A Simple TensorFlow example
import tensorflow as tf # first, create a TensorFlow constant
const = tf.constant(2.0, name="const") # create TensorFlow variables
b = tf.Variable(2.0, name='b')
c = tf.Variable(1.0, name='c') # now create some operations
d = tf.add(b, c, name='d')
e = tf.add(c, const, name='e')
a = tf.multiply(d, e, name='a')
声明地常量和变量可以可选地使用一个string来标记,Tensorflow会根据初始值推断变量或常量地类型,也可以使用dtype参数来显式指定类型,如tf.float32, tf.int32等,更多类型
注意:
It’s important to note that, as the Python code runs through these commands, the variables haven’t actually been declared as they would have been if you just had a standard Python declaration (i.e. b = 2.0). Instead, all the constants, variables, operations and the computational graph are only created when the initialisation commands are run.
在执行上述python代码地时候,这些变量和常量并不像标准python那样立刻被声明,而是所有地常量、变量、运算和计算图(computational graph)必须在初始化命令执行时才会被创建。
# setup the variable initialisation
init_op = tf.global_variables_initializer()
To run the operations between the variables, we need to start a TensorFlow session – tf.Session. The TensorFlow session is an object where all operations are run. TensorFlow was initially created in a static graph paradigm – in other words, first all the operations and variables are defined (the graph structure) and then these are compiled within the tf.Sessionobject.
为了执行变量间的运算,需要启动一个tf.Session,所有运算都是在session对象中运行的。TensorFlow首先创建静态图。
# start the session
with tf.Session() as sess:
# initialise the variables
sess.run(init_op)
# compute the output of the graph
a_out = sess.run(a)
print("Variable a is {}".format(a_out))
此处a是运算(operation)而不是变量,所以可以run。
Note something cool - 在a之前还声明了d和e,在计算a之前需要先执行d和e,我们不需要显式执行d和e,Tensorflow通过数据流图(data flow graph)知道a所有的依赖,自动执行依赖的运算。使用TensorBoard的功能可以看到TensorFlow创建的graph:

2.1 The TensorFlow placeholder
Let’s also say that we didn’t know what the value of the array b would be during the declaration phase of the TensorFlow problem (i.e. before the with tf.Session() as sess) stage. In this case, TensorFlow requires us to declare the basic structure of the data by using the tf.placeholder variable declaration. Let’s use it for b:
在Tensorflow训练问题声明阶段,我们可能不知道数组b的具体值。这种情况下,需要我们使用变量声明 tf.placeholder 来声明数据的基本结构。
# create TensorFlow variables
b = tf.placeholder(tf.float32, [None, 1], name='b')
第二个参数是data的shape,placeholder可以接收一个None的size参数。
a_out = sess.run(a, feed_dict={b: np.arange(0, 10)[:, np.newaxis]})
调用session.run时需要将b的具体数据feed进去。
Tensorflow_入门学习_1的更多相关文章
- Tensorflow_入门学习_2_一个神经网络栗子
3.0 A Neural Network Example 载入数据: from tensorflow.examples.tutorials.mnist import input_data mnist ...
- vue入门学习(基础篇)
vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...
- Hadoop入门学习笔记---part4
紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...
- Hadoop入门学习笔记---part3
2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...
- PyQt4入门学习笔记(三)
# PyQt4入门学习笔记(三) PyQt4内的布局 布局方式是我们控制我们的GUI页面内各个控件的排放位置的.我们可以通过两种基本方式来控制: 1.绝对位置 2.layout类 绝对位置 这种方式要 ...
- PyQt4入门学习笔记(一)
PyQt4入门学习笔记(一) 一直没有找到什么好的pyqt4的教程,偶然在google上搜到一篇不错的入门文档,翻译过来,留以后再复习. 原始链接如下: http://zetcode.com/gui/ ...
- Hadoop入门学习笔记---part2
在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...
- Retrofit 入门学习
Retrofit 入门学习官方RetrofitAPI 官方的一个例子 public interface GitHubService { @GET("users/{user}/repos&qu ...
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...
随机推荐
- python 之生产者消费者模型
进程实现: import time,random from multiprocessing import Process,Queue def producer(name,q): count= 0 wh ...
- E20181121-hm
invoke vt. 乞灵,祈求; 提出或授引…以支持或证明; 召鬼; 借助
- Node.js 自定义模块
Node.js内置多个模块,也可以使用第三方模块,今天学习一下如何使用自己定义的模块 在同级目录下定义两个js文件 第一个:custom1.js "use strict"; fun ...
- vant搜索框问题
最近使用vant搜索框时发现,当输入内容点击一次搜索有数据,点击错号把内容去掉再点击搜索,都没进入点击搜索方法. 解决方法:把bindtop改成bindtouchstart <van-searc ...
- 笔记-JavaWeb学习之旅13
验证码案列 昨天晚上出现的500错误原因在于验证码没有获取到,获取验证码是应该获取的是共享域中的验证码,而我把获取值得键给写成了jsp中的键,而不是内存生成图片中,然后把图片上传到共享域中的键.这两个 ...
- luoguP3808[模板]AC自动机(简单版)
传送门 ac自动机模板题,裸的多串匹配 代码: #include<cstdio> #include<iostream> #include<algorithm> #i ...
- Tyvj1474 打鼹鼠
Description 在这个“打鼹鼠”的游戏中,鼹鼠会不时地从洞中钻出来,不过不会从洞口钻进去(鼹鼠真胆大……).洞口都在一个大小为n(n<=1024)的正方形中.这个正方形在一个平面直角坐标 ...
- 一个致命的 Redis 命令,导致公司损失 400 万
什么样的 Redis 命令会有如此威力,造成如此大的损失? 具体消息如下: 看完这个消息后,我心又一惊,为什么这么低级的问题还在犯?为什么线上的危险命令没有被禁用?这事件报道出来真是觉得很低级... ...
- Java | 基础归纳 | trim()
trim() 方法用于删除字符串的头尾空白符. 一般可以用来判断空白字符串的长度 String mName = “ ”: if(mName == null || mName.trim().length ...
- [coci2015-2016 coii] dijamant【图论】
传送门:http://www.hsin.hr/coci/archive/2015_2016/ 进去之后的最下面的国家赛.顺便说一句,dijamant是克罗地亚语的“钻石”的意思. 官方题解是说压位的暴 ...