在這幾行代碼中完全體現(xiàn)了這兩項(xiàng)操作
( ? ? ?還額外包括了 ?:
將數(shù)據(jù)表示為tensors;
使用Variables來保持狀態(tài)信息;
分別使用feeds和fetches來填充數(shù)據(jù)和抓取任意的操作結(jié)果; ? )
import tensorflow as tfa =tf.placeholder("float")b =tf.placeholder("float")y = tf.multiply(a,b)sess = tf.Session()print(sess.run(y, feed_dict={a: 3, b: 3}))--------------------- 轉(zhuǎn)載于 作者:Jasen_Fu
? ? ? ? ? ? ? ? ? TensorFlow用張量表示所有的數(shù)據(jù),張量可看成一個(gè)n維的數(shù)組或列表,在圖中的節(jié)點(diǎn)之間流通。張量的維數(shù)稱為階,在另一片文中有相應(yīng)的一些介紹。
?
?
在tensorflow程序中,系統(tǒng)會(huì)自動(dòng)給參數(shù)一個(gè)默認(rèn)的計(jì)算圖,可以通過tf.get_default_graph()函數(shù)獲取。
import tensorflow as tfx = tf.constant(10)y = tf.constant(15)print(x.graph)結(jié)果為:<tensorflow.python.framework.ops.Graph object at 0x000001AE613E8E80>
tensorflow可以通過tf.Graph函數(shù)生成新的計(jì)算圖。不同計(jì)算圖上的張量和運(yùn)算都不會(huì)共享
g1=tf.Graph()with g1.as_default(): # 在計(jì)算圖g1中定義變量'v',并設(shè)置初始值為0。 v=tf.get_variable('v',initializer=tf.zeros_initializer()(shape = [1])) g2=tf.Graph()with g2.as_default(): # 在計(jì)算圖g2中定義變量'v',并設(shè)置初始值微1。 v=tf.get_variable('v',initializer=tf.ones_initializer()(shape = [1]))# 在計(jì)算圖g1中讀取變量'v'的取值with tf.Session(graph=g1) as sess: tf.global_variables_initializer().run() with tf.variable_scope('',reuse=True): # 在計(jì)算圖g1中,變量'v'的取值應(yīng)該為0,下一行代碼會(huì)輸出[0.]。 print(sess.run(tf.get_variable('v')))# 在計(jì)算圖g2中讀取變量'v'的取值with tf.Session(graph=g2) as sess: tf.global_variables_initializer().run() with tf.variable_scope('',reuse=True): # 在計(jì)算圖g2中,變量'v'的取值應(yīng)該為1,下一行代碼會(huì)輸出[1.]。 print(sess.run(tf.get_variable('v')))
############# 代碼借鑒于https://www.cnblogs.com/hypnus-ly/p/8040951.html?這位朋友的博客#######
tensorflow中的計(jì)算圖不僅可以用來隔離張量和計(jì)算,它還提供了管理張量和計(jì)算的機(jī)制,具體的可以到上面這位朋友的博客中看。
?
import tensorflow as tfx = tf.constant(10)y = tf.constant(15)print(x y)結(jié)果: Tensor("add_1:0", shape=(), dtype=int32)
我們觀察一下這里的輸出信息,一共是三個(gè),代表了張量在存儲(chǔ)時(shí)候的三種屬性:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?名字(name)、維度(shape)和類型(type)
其中,name屬性以“node:src_output”的形式表示,node表示節(jié)點(diǎn)的名稱,src_output表示當(dāng)前張量來自節(jié)點(diǎn)的第幾個(gè)輸出。
還可以通過result.get_shape函數(shù)來獲取結(jié)果張量的維度信息。
?
創(chuàng)建session的三種方式:
# 1、 創(chuàng)建一個(gè)會(huì)話with tf.Session() as sess: print(sess.run(result))
# tensorflow中需要手動(dòng)指定默認(rèn)會(huì)話,當(dāng)該會(huì)話指定后,可以通過tf.Tensor.eval函數(shù)來計(jì)算一個(gè)張量的取值。# 2、 創(chuàng)建一個(gè)默認(rèn)的會(huì)話sess=tf.Session()with sess.as_default(): # 需要在這里先指定一個(gè)會(huì)話,也就是指定一個(gè)sess的名稱(有點(diǎn)類似于namespace吧) print(result.eval())
# 3、 創(chuàng)建一個(gè)會(huì)話sess=tf.Session()
# 下面兩個(gè)命令等價(jià)print(sess.run(result))print(result.eval(session=sess))
# 在交互式環(huán)境下,使用設(shè)置默認(rèn)會(huì)話的方法來獲取張量的取值更加方便,tensorflow提供了一種在交互式環(huán)境下直接構(gòu)建# 默認(rèn)會(huì)話的函數(shù),tf.InteractiveSession。該函數(shù)會(huì)自動(dòng)將生成的會(huì)話注冊(cè)為默認(rèn)會(huì)話。sess= tf.InteractiveSession()print(result.eval())sess.close()
?
?
?
?
?
?
?
?
?
?
?
?
?
?
來源:http://www.icode9.com/content-4-53751.html聯(lián)系客服