zoukankan      html  css  js  c++  java
  • 【Tensorflow】(tf.Graph)和(tf.session)

    • 图(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
  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    小花梨的三角形(暴力上下扫三角形)
    调手表(bfs)
    Educational Codeforces Round 65 (Rated for Div. 2)(ACD)B是交互题,不怎么会
    C. News Distribution(并查集)
    Codeforces Round #560 (Div. 3)A-E
  • 原文地址:https://www.cnblogs.com/gaona666/p/12349657.html
Copyright © 2011-2022 走看看