TensorFlow入門實操課程第一章教程筆記

2022-06-05 10:06:07 字數 2226 閱讀 8211

第乙個應用程式總是應該從超級簡單的東西開始,這樣可以看到**如何產生和運作的整體框架。

就建立神經網路而言,我喜歡使用的例子是乙個能夠學習兩組數字之間函式關係的神經元。具體來說,如果你在寫下面函式的**,表明你已經知道了這個函式的"規則",即x和y的對映關係。

那麼,如何訓練乙個神經網路來完成同等的任務呢? 用資料!用資料來訓練神經網路。通過給它輸入一組x,和一組y,它應該能夠找出它們之間的關係。

這顯然和你習慣的正規化很不一樣,所以讓我們一步步來了解它。

float hw_function(float x)

讓我們從匯入tensorflow開始。為了方便後續使用,我們把它叫做tf。

然後我們匯入乙個名為numpy的庫,它可以幫助我們方便快捷地將資料表示為列表。

定義神經網路的框架叫做keras,它將神經元網路模型定義為一組sequential層。keras庫也需要匯入。

import

tensorflow as tf

import

numpy as np

from tensorflow import keras

定義並編譯神經元網路

接下來我們將建立乙個最簡單的神經網路。它只有1層,且這層只有1個神經元,它的輸入只是1個數值。

model = tf.keras.sequential([keras.layers.dense(units=1, input_shape=[1])])

在編譯神經網路時,我們必須指定2個函式:乙個損失函式和乙個優化器。

如果你讀過很多有關機器學習的數學理論,這裡通常是用到它們的地方。但tensorflow將這些數學很好地封裝在函式中供你使用。那麼這個程式裡到底發生了什麼?我們來看一下:

我們知道,在上面的函式中,兩組數字之間的關係其實是y=2x-1。當計算機試圖 "學習 "這個對映關係時,它猜測......也許y=10x+10。loss(損失)函式將猜測的答案與已知的正確答案進行比較,並衡量偏差程度。然後,計算機使用optimizer函式再做一次猜測,努力使損失最小化。這時,也許計算機會得出一些像y=5x+5這樣的結果,雖然還是很糟糕,但更接近正確的結果(即損失更低)。訓練的時候,將依據指定的epochs次數,重複這樣的猜測與優化過程。

下面的程式中可以看到如何設定用 "平均平方誤差 "來計算損失,並使用 "同步梯度下降 "來優化神經元網路。你並不需要理解背後的這些數學,但你可以看到它們的成效! :)

隨著經驗的積累,你將了解如何選擇相應的損失和優化函式,以適應不同的情況。

model.compile(optimizer='

sgd', loss='

mean_squared_error

')

下來我們將提供一些資料。對於本案例,我們提供6個x和6個y。可以看到它們之間的關係是y=2x-1,所以當x=-1,y=-3,以此類推

xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)

ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)

在呼叫model.fit函式時,神經網路「學習」x和y之間的關係。在這個過程中,它將一次又一次地完成上面所說的迴圈,即做乙個猜測,衡量它有多好或多壞(又名損失),使用opimizer進行再一次猜測,如此往復。訓練將根據指定的遍數(epochs)執行此操作。當執行此**時,將在輸出結果中看到損失(loss)。

model.fit(xs, ys, epochs=500)

到這裡為止模型已經訓練好了,它學習了x和y之間的關係。現在,你可以使用model.predict方法來讓它計算未知x對應的y。例如,如果x=10,你認為y會是什麼?在執行下面**之前,請猜一猜:

print(model.predict([10.0]))

你可能會想到19歲,對吧?但最後輸出比19低了一丁點兒。這是為什麼呢?因為神經網路處理的是概率,所以根據我們向神經元網路提供的資料,它計算出x和y之間的關係是y=2x-1的概率非常高。但由於只有6個資料點,無法完全確定x和y的函式關係。因此,10對應的y值非常接近19,但不一定正好是19。當使用神經網路時,會看到這種模式反覆出現。你幾乎總是在處理概率,而非確定的數值。並經常需要通過進一步編寫程式,來找出概率所對應的結果,特別當處理分類問題時。

彙編初入門debug實操

如jmp 2ae3 3 執行後cs 2ae3h ip 0003h若只修改ip內容 jmp 某乙個合法的暫存器 如 jmp ax指令執行前 ax 1000h,cs 2000h ip 0003h 指令執行後 ax 1000h cs 2000h ip 1000h xp環境下進入command 即是cmd,...

NLP入門例項推薦(Tensorflow實現)

mnist nn mnist cnn text classification cnn 專案 tensorflow例項 cnn處理句子相似度 multi perspective sentence similarity modeling with convolutional neural network...

MongoDB入門實操 搭建副本集

首先在盤根目錄下建立如下檔案 我的mongod.cfg配置如下 systemlog destination file path d mongodb1 log mongod.log storage dbpath d mongodb1 db replication replsetname rs1 net...