2017-04-06 86 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