Tensorflow開卷筆記

2021-09-11 09:20:51 字數 2286 閱讀 9330

tensorflow,以下簡稱tf。

版本記錄:

anaconda自帶的下面這些庫必須先解除安裝了,裝tensorflow的時候順帶裝上它們。

不然總報錯,vs2017 && vscode都會import報錯,無法除錯。

---numpy-1.16.1

tensorflow-1.13.0rc2

matplotlib-3.0.2

一開始接觸容易蒙蔽。

a=tf.add(b,c)

這種東西,想當然的以為a是個返回值。

但a其實是個物件噠、

有返回值的函式可以做成物件,沒返回值的也可以做成物件。

總之在tf裡面,絕大部分基礎操作都是作為「概念上的運算」實體化而成的物件。

通俗的說,每乙個物件,儲存了一條計算式。

a1=tf.add(b,c)

a2=tf.multiply(a,c)

如上面的例子,a1中儲存了"b+c"這條式子。

a2中儲存了"(b+c)*c"這條式子 (也可以說是儲存了"a1*c",但是a1本身不具備確實的存在價值,只是中間容器罷了。)

但無論是a1還是a2,都只是式子而已,都只記錄了「概念上的運算」,卻並沒有真正被運算出來。

所以在設計階段,他們是沒有值的!

你去print(a2),能得到的也就是"(b+c)*c"這條式子,並沒有人幫你算值

#當然事實上你去print只會返回乙個物件型別資訊,

所有運算都集中在在tensorflow.session()會話中處理!!

tensorflow.session().run(a2)
此時真正對「式子」進行了「運算」。

run()函式才會給返回值。

你把上面的式子print()包起來就能看到結果了。

一開始接觸tf,做完乙個demo我就很蒙蔽。

雖然我告訴你了要minimize誰,告訴了你怎麼計算loss,但我沒告訴你咋更新引數啊!!!你怎麼就啥都會呢。

為什麼要搞定義+計算分離的設計,和這個問題本質是相同的。

幾番查詢看到官網一段介紹:

用tensorflow來訓練它是非常容易的。因為tensorflow擁有一張描述你各個計算單元的圖,它可以自動地使用反向傳播演算法(backpropagation algorithm)來有效地確定你的變數是如何影響你想要最小化的那個成本值的。然後,tensorflow會用你選擇的優化演算法來不斷地修改變數以降低成本。

//參考

突然有點明白了,因為tf能自己搞反向傳播,計算任意兩個標準引數之間的梯度啊!

所以你不用給他寫引數更新式子,它自己就會更新。

簡單的說,tf自己搞了個新宇宙。

這個宇宙內的數學規則都被重新設計了一遍。

tf裡面每乙個運算,都有對應的專門的類。

這些類內建好了對應的求導演算法。

你從本宇宙輸入的資料,都必須先變成標準化的tf宇宙的物件。

tf.tensor

tf.variable

tf.placeholder

...

所有東西在同乙個標準下進行運算,自然也可以被這個標準的建立者(tf宇宙)記錄、解構、求導。

舉例:直接用b=2*a是算不了b對a的梯度的。

雖然我們都知道是2,但tf不知道,因為這條式子不屬於tf宇宙。

你得先把資料都變成tf裡的標準形式。

例如

a=tf.get_variable('a',[1],initializer=tf.constant_initializer(1.0))

c=tf.constant(2)

這樣一來,a就是乙個合法的tf宇宙變數,c就是乙個合法的tf宇宙常量

規範了資料不夠。連乘法都不能用py自帶的,要用tf裡面的。

如果你直接a*c,這樣相當於兩條「式子」相乘,不是「值」相乘,是沒有意義的。

(當然事實上可以通過過載*運算子來讓它有意義,此處只是便於理解。)

必須使用tf宇宙標準形式。

b=matmul(a,c)
然後因為tf內建了對matmul()函式的求導法則,這樣才能求b對a的導數,為常數2。

然後回到最開始說的,這也是為什麼tf必須搞定義和計算分離。

因為它需要無數次去自動算梯度,自動更新引數。

所以它必須得知「如何求導」。

要知道「如何求導」,必須知道「如何計算」。

所以tf宇宙裡的物件,儲存的都是「計算過程」,即「式子」,這一資訊。

tensorflow學習筆記

tensorflow安裝可以直接通過命令列或者原始碼安裝,在此介紹tensorflow8命令列安裝如下 安裝tensorflow sudo pip install upgrade 另外,解除安裝tensorflow命令為 sudo pip uninstall tensorflow tensorflo...

Tensorflow學習筆記

1.如何在虛擬機器中安裝tensor flow 1 首先安裝pip pip install 2 pip install 2.學習tensorflow需要學習 python and linux 3.使用 tensorflow,你必須明白 tensorflow 1 使用圖 graph 來表示計算任務.2...

TensorFlow學習筆記

1 擬合直線 import the library import tensorflow as tf import numpy as np prepare train data train x np.linspace 1,1,100 temp1 train x,temp2 train x.shape,...