2017-04-06 111 views
-1

我无法理解Tensorflow系统。 首先,我写我无法理解Tensorflow系统

#coding:UTF-8 

from __future__ import absolute_import 
from __future__ import division 
from __future__ import print_function 

import tensorflow as tf 

const1 = tf.constant(2) 
const2 = tf.constant(3) 
add_op = tf.add(const1,const2) 

with tf.Session() as sess: 
    result = sess.run(add_op) 
    print(result) 

并将其打印出来5. 其次,我写

#coding:UTF-8 

from __future__ import absolute_import 
from __future__ import division 
from __future__ import print_function 

import tensorflow as tf 

const1 = tf.constant(2) 
const2 = tf.constant(3) 
add_op = tf.add(const1,const2) 
print(add_op) 

并将其打印出来张量( “地址:0”,形状=(),D型= int32类型)。 我无法理解这个系统。 我使用Python和其他语言,所以我认为tf.add()方法是添加方法。但是,在Tensorflow的情况下,它似乎不同。 这部分为什么要

with tf.Session() as sess: 
    result = sess.run(add_op) 
    print(result) 

有必要吗? 这部分有什么功能?

回答

1

我建议阅读官方Getting Started with TensorFlow引导TensorFlow的去了解图书馆的核心概念,如这似乎是这里的问题之一:

每TensorFlow方案由两个部分组成:

  1. 构建计算图。
  2. 运行计算图。

现在什么是“计算图”?在TensorFlow中,您可以指定一系列在您的输入上执行的操作。这一系列操作是你的“计算图”。要理解的是,让我们看看一些例子:

  • 简单相加:让我们来看看你的榜样,你的代码是

    const1 = tf.constant(2) 
    const2 = tf.constant(3) 
    add_op = tf.add(const1,const2) 
    

    这在图中创建两个固定节点,并创建第二个节点它添加了它们。从图形上看,这看起来像:

    graph for 2+3

  • 为了使它更有点复杂,可以说你有一个输入x并希望恒定3添加到它。那么你的代码将是:

    const1 = tf.constant(2) 
    x = tf.placeholder(tf.float32) 
    add_op = tf.add(const1,x) 
    

    和你的图形是

    graph for x+3

在这两个例子中,这是该计划的第一部分。到目前为止,我们只定义了我们的计算图表应该是什么样的,即我们有什么输入,输出什么,以及所需的所有计算。

但是:到目前为止没有进行过任何计算!在第二个示例中,您甚至不知道输入的内容是x,只是它将是float32。 如果你有一个GPU,你会注意到TensorFlow甚至还没有触及GPU。即使你有一个拥有数百万训练图像的巨大神经网络,这个步骤也只需几毫秒,因为没有“真正的”工作需要完成。

现在来第二部分:运行我们上面定义的图。这是工作发生的地方! 我们通过创建tf.Session来启动TensorFlow,然后我们可以通过调用sess.run()运行任何东西。

with tf.Session() as sess: 
    result = sess.run(add_op) 
    print(result) 

在第二个例子,我们现在要告诉我们的TensorFlow值x应该是什么:

with tf.Session() as sess: 
    result = sess.run(add_op, {x: 5.0}) 
    print(result) 

TL;博士:每TensorFlow方案有两个部分:1,建立一个计算图表,和2.运行这个图表。用tf.add您只能定义图表,但不会执行添加。要运行此图,请使用sess.run(),与您的第一件代码一样。

+0

thx !!我的答案对我来说非常好,它可以理解得很好。我有一个问题,我可以调用tf.Session方法是激活函数吗?我读了Tensorflow教程,但我无法很好地理解这部分。 – user21063