• 图(tf.Graph):计算图,主要用于构建网络,本身不进行任何实际的计算。
  • 会话(tf.session):会话,主要用于执行网络。所有关于神经网络的计算都在这里进行,它执行的依据是计算图或者计算图的一部分,同时,会话也会负责分配计算资源和变量存放,以及维护执行过程中的变量。

Tensorflow的几种基本数据类型:

tf.constant(value, dtype=None, shape=None, name='Const', verify_shape=False)
tf.Variable(initializer, name)
tf.placeholder(dtype, shape=None, name=None)
graph = tf.Graph()
with graph.as_default():
img = tf.constant(1.0, shape=[1,5,5,3])

以上代码中定义了一个计算图,在该计算图中定义了一个常量。Tensorflow默认会创建一张计算图。所以上面代码中的前两行,可以省略。默认情况下,计算图是空的。

在执行完img = tf.constant(1.0, shape=[1,5,5,3])以后,计算图中生成了一个node,一个node结点由name, op, input, attrs组成,即结点名称、操作、输入以及一系列的属性

对于tf.constant()函数,只会生成一个node,但对于有的函数,如tf.Variable(initializer, name)(注意其第一个参数是初始化器)就会生成多个node结点

需要注意的是,如果没有对结点进行命名,Tensorflow自动会将其命名为:Const、Const_1、const_2......。其他类型的结点类同。

现在,我们添加一个变量:

执行完tf.Variable()函数后,一共产生了三个结点:

  • Variable:变量维护(不存放实际的值)
  • Variable/Assign:变量分配
  • Variable/read:变量使用

图中只是完成了操作的定义,但并没有执行操作(如Variable/Assign结点的Assign操作,所以,此时候变量依然不可以使用,这就是为什么要在会话中初始化的原因)。

img = tf.constant(1.0, shape=[1,5,5,3])
k = tf.constant(1.0, shape=[3,3,3,1])
kernel = tf.Variable(k)
y2 = tf.nn.conv2d(img, kernel, strides=[1,2,2,1], padding="SAME")
with tf.Session() as sess:
sess.run(y2)

这段代码错误的原因在于,变量并没有初始化就被使用,而从图中清晰的可以看到,直接执行卷积,是回溯不到变量的值(Const_1)的(箭头方向)。

所以,在执行之前,要进行初始化,代码如下:
img = tf.constant(1.0, shape=[1,5,5,3])
k = tf.constant(1.0, shape=[3,3,3,1])
kernel = tf.Variable(k)
y2 = tf.nn.conv2d(img, kernel, strides=[1,2,2,1], padding="SAME")
init = tf.global_variables_initializer()

tf.Session().run()函数的功能为:执行fetches参数所提供的operation操作或计算其所提供的Tensor

链接   http://looop.cn/?p=3365

最新文章

  1. iis7.0上发布mvc4.0网站
  2. OpenSuse Caffe CNN库 配置
  3. 项目中用到RouteTable,发布到IIS7中无法访问
  4. .Net 异步方法加上“timeout”
  5. readonly和const区别
  6. Codeforces Round #198 (Div. 2) —— A
  7. 吉哥系列故事--完美队形 - HDU 4513 (Manacher)
  8. java实现指定文件扫描目录
  9. Meet Apache Wicket
  10. VS2015一新建项目就出现未将对象引用设置到对象的实例怎么办?[z]
  11. angular学习笔记(2)- 前端开发环境
  12. SPSS for Mac 安装教程
  13. java调用python的惨痛史(无法获取环境变量)
  14. golang学习笔记6 beego项目路由设置
  15. UESTC--1727
  16. Jquery 事件执行两次
  17. 理解MySQL——并行数据库与分区(Partition)
  18. Oracle 分区表(转)
  19. Pyscripter 不能正确调用另一文件中模块的问题的解析(Internal Engine 和 Remote Engine)
  20. Centos 7 搭建git服务器及使用gitolite控制权限

热门文章

  1. Unity Scene视图下 输出物体坐标等信息
  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:按钮标签
  3. greenplum 存储过程 函数
  4. 使用 Helm【转】
  5. 非极大抑制睔PYTHON实现
  6. HiBench成长笔记——(9) Centos安装Maven
  7. java关键字“static”
  8. 用python实现在手机查看小姐姐的电脑在作什么!
  9. 数据结构——KMP(串)
  10. MongoDB 初始化数据同步