近年來,人工智能 (AI) 獲得了極大的普及。
如果您是軟件工程師、計算機科學家或一般的數據科學愛好者,那麼您可能會對該領域提供的圖像處理、模式識別和對象檢測的驚人應用感興趣。
您可能聽說過的最重要的 AI 子領域是深度學習。 該領域專注於以人腦功能為模型的強大算法(計算機程序指令),稱為 神經網絡.
在本文中,我們將介紹神經網絡的概念以及如何使用以下方法構建、編譯、擬合和評估這些模型 蟒蛇.
神經網絡
神經網絡或 NN 是一系列模仿人腦生物活動的算法。 神經網絡由節點組成,也稱為神經元。
垂直節點的集合稱為層。 該模型由一個輸入、一個輸出和多個隱藏層組成。 每一層都由節點組成,也稱為神經元,在這些節點中進行計算。
在下圖中,圓圈代表節點,節點的垂直集合代表層。 該模型分為三層。
一層的節點通過傳輸線連接到下一層,如下所示。
我們的數據集由標記數據組成。 這意味著每個數據實體都被分配了一個特定的名稱值。
因此,對於動物分類數據集,我們將貓和狗的圖像作為我們的數據,以“貓”和“狗”作為我們的標籤。
重要的是要注意,標籤需要轉換為數值才能讓我們的模型理解它們,所以我們的動物標籤變成貓的“0”和狗的“1”。 數據和標籤都通過模型傳遞。
學習
數據一次被提供給模型一個實體。 這些數據被分解成塊並通過模型的每個節點。 節點對這些塊執行數學運算。
您不需要了解本教程的數學函數或計算,但了解這些模型的工作原理很重要。 在一層中進行一系列計算之後,數據被傳遞到下一層,依此類推。
完成後,我們的模型會在輸出層預測數據標籤(例如,在動物分類問題中,我們得到貓的預測“0”)。
然後模型繼續將此預測值與實際標籤值進行比較。
如果值匹配,我們的模型將採用下一個輸入,但如果值不同,模型將計算兩個值之間的差異,稱為損失,並調整節點計算以在下一次生成匹配的標籤。
深度學習框架
要在代碼中構建神經網絡,我們需要導入 深度學習框架 稱為使用我們的集成開發環境 (IDE) 的庫。
這些框架是一組預先編寫的函數,它們將在本教程中為我們提供幫助。 我們將使用 Keras 框架來構建我們的模型。
Keras 是一個 Python 庫,它使用名為 張量流 以簡單的序列模型的形式輕鬆創建 NN。
Keras 還附帶了自己的現有模型,這些模型也可以使用。 在本教程中,我們將使用 Keras 創建自己的模型。
您可以從以下位置了解有關此深度學習框架的更多信息 Keras 網站.
構建神經網絡(教程)
讓我們繼續使用 Python 構建神經網絡。
問題陳述
神經網絡是一種基於人工智能的問題的解決方案。 在本教程中,我們將介紹 Pima Indians Diabetes Data,該數據可用 点击這裡.
國際自盟 機器學習已經編譯了這個數據集 並包含印度患者的醫療記錄。 我們的模型必須預測患者是否在 5 年內發生糖尿病。
加載數據集
我們的數據集是一個名為“diabetes.csv”的單個 CSV 文件,可以使用 Microsoft Excel 輕鬆操作。
在創建我們的模型之前,我們需要導入我們的數據集。 使用以下代碼,您可以做到這一點:
將熊貓作為pd導入
數據 = pd.read_csv('diabetes.csv')
x = data.drop(“結果”)
y = 數據[“結果”]
在這裡我們使用 大熊貓 為了能夠操作我們的 CSV 文件數據,read_csv() 是 Pandas 的內置函數,它允許我們將文件中的值存儲到一個名為“data”的變量中。
變量 x 包含我們的數據集,沒有結果(標籤)數據。 我們通過刪除 x 的標籤的 data.drop() 函數來實現這一點,而 y 僅包含結果(標籤)數據。
建立順序模型
第 1 步:導入庫
首先,我們需要導入 TensorFlow 和 Keras,以及我們模型所需的某些參數。 下面的代碼允許我們這樣做:
將tensorflow作為tf導入
從張量流導入 keras
從 tensorflow.keras.models 導入順序
從 tensorflow.keras.layers 導入激活,密集
從 tensorflow.keras.optimizers 導入 Adam
從 tensorflow.keras.metrics 導入 categorical_crossentropy
對於我們的模型,我們正在導入密集層。 這些是全連接層; 即,一層中的每個節點都與下一層中的另一個節點完全連接。
我們也在導入一個 激活 縮放發送到節點的數據所需的功能。 優化器 還進口了以減少損失。
Adam 是一個著名的優化器,它使我們的模型更新節點計算更有效,以及 categorical_crossentropy 是 我們將使用的損失函數的類型(計算實際標籤值和預測標籤值之間的差異)。
第 2 步:設計我們的模型
我正在創建的模型有一個輸入層(有 16 個單元)、一個隱藏層(有 32 個單元)和一個輸出層(有 2 個單元)。 這些數字不是固定的,將完全取決於給定的問題。
設置正確的單元數和層數是一個可以通過練習加班改進的過程。 激活對應於我們將在數據通過節點之前對其執行的縮放類型。
Relu 和 Softmax 是該任務的著名激活函數。
模型=順序([
密集(單位= 16,輸入形狀=(1,),激活='relu'),
密集(單位= 32,激活='relu'),
密集(單位 = 2,激活 = 'softmax')
])
以下是模型的摘要應如下所示:
訓練模型
我們的模型將分兩步進行訓練,第一步是編譯模型(將模型放在一起),第二步是在給定的數據集上擬合模型。
這可以使用 model.compile() 函數和 model.fit() 函數來完成。
model.compile(optimizer = Adam(learning_rate = 0.0001),loss = 'binary_crossentropy',metrics = ['accuracy'])
model.fit(x, y, epochs = 30, batch_size = 10)
指定“準確度”指標可以讓我們在訓練期間觀察模型的準確度。
由於我們的標籤是 1 和 0 的形式,我們將使用二進制損失函數來計算實際標籤和預測標籤之間的差異。
數據集也被分成 10 個批次(batch_size),並將通過模型 30 次(epochs)。 對於給定的數據集,x 將是數據,y 將是與數據對應的標籤。
使用預測測試模型
為了評估我們的模型,我們使用 predict() 函數對測試數據進行預測。
預測 = model.predict(x)
就是這樣!
你現在應該對 深度學習 應用程序、神經網絡、它們的一般工作原理以及如何在 Python 代碼中構建、訓練和測試模型。
我希望本教程能夠為您提供創建和部署您自己的深度學習模型的起點。
如果文章有幫助,請在評論中告訴我們。
發表評論