91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用python創建網絡模型吧

發布時間:2021-11-09 18:38:13 來源:億速云 閱讀:267 作者:柒染 欄目:大數據

今天就跟大家聊聊有關如何使用python創建網絡模型吧,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

      神經網絡(NN),也被稱為人工神經網絡(ANN),是機器學習領域中學習算法的子集,大體上借鑒了生物神經網絡的概念。目前,神經網絡在計算機視覺、自然語言處理等領域應用廣泛。德國資深機器學習專家Andrey Bulezyuk說到,“神經網絡正在徹底改變機器學習,因為它們能夠有效地模擬各種學科和行業的復雜抽象,且無需太多人工參與。”
大體上,人工神經網絡基本包含以下組件:

  • 接收數據并傳遞數據的輸入層(input layer);

  • 隱藏層(hidden layer);

  • 輸出層(output layer);

  • 層與層之間的權重(weight);

  • 每個隱藏層使用的激活函數(activation function);


       在本文教程中,使用的是簡單的Sigmoid激活函數,但注意一點,在深層神經網絡模型中, sigmoid激活函數一般不作為首選,原因是其易發生梯度彌散現象。
       此外,人工神經網絡有幾種不同類型的神經網絡,比如前饋神經網絡、卷積神經網絡及遞歸神經網絡等。本文將以簡單的前饋或感知神經網絡為例,這種類型的人工神經網絡是直接從前到后傳遞數據的,簡稱前向傳播過程。
       而訓練前饋神經元通常需要反向傳播算法,這就需要為網絡提供相應的輸入和輸出集。當輸入數據被傳輸到神經元時,它會經過相應的處理,并將產生的輸出傳輸給下一層。
下圖簡單展示了一個神經網絡結構:

如何使用python創建網絡模型吧

       此外,理解神經網絡如何工作的最好方法是學習如何在不使用任何工具箱的前提下從頭開始構建一個。在本文中,我們將演示如何使用Python創建一個簡單的神經網絡。      

問題

       下表顯示了我們將解決的問題:

如何使用python創建網絡模型吧

       我們將訓練神經網絡,以便在提供一組新數據時可以預測出正確的輸出值。  
         從表中看到,輸出的值始終等于輸入節中的第一個值。因此,我們可以期望新情形的輸出(?)值為1。  
         下面讓我們看看是否可以使用一些Python代碼來得到相同的結果。      

創建神經網絡類|NeuralNetwork Class

       我們將在Python中創建一個NeuralNetwork類來訓練神經元以提供準確的預測,該類還包含其他輔助函數。我們不會將神經網絡庫用于創建這個簡單的神經網絡示例中,但會導入基本的Numpy庫來協助計算。
       Numpy庫是處理數據的一種基本庫,它具有以下四種重要的計算方法:

  • EXP——用于產生所述自然指數;

  • array——用于生成矩陣;

  • dot——用于矩陣相乘;

  • random——用于生成隨機數;

 

應用Sigmoid函數

       我們將使用Sigmoid函數,它繪制出一個“S”形曲線,將其作為本文創建的神經網絡的激活函數。

如何使用python創建網絡模型吧

       此函數可以將任何值映射到0到1之間,并能幫助我們規范化輸入的加權和。  
         此后,我們將創建Sigmoid函數的導數,以幫助計算權重的基本調整。  
         可以使用Sigmoid函數的輸出來生成其導數。例如,如果輸出變量是“x”,那么它的導數將是x *(1-x)。      

訓練模型

       訓練模型意味著我們將教導神經網絡進行準確預測的階段。每個輸入都有一個權重(weights)——正或負的,這意味著具有大值正權重或大值負權重的輸入將多所得到的輸出有更大地影響。
       注意,模型訓練最初時,每個權重的初始化都是隨機數。
       以下是本文構建的神經網絡示例問題中訓練過程:

  • 1.從訓練數據集中獲取輸入,根據它們的權重進行一些調整,并通過計算神經網絡輸出的方法來一層一層的傳輸;

  • 2.計算反向傳播的錯誤率。在這種情況下,它是神經元預測得到的輸出與訓練數據集的預期輸出之間的誤差;

  • 3.根據得到的誤差范圍,使用誤差加權導數公式進行一些小的權重調整;

  • 4.將此過程重復15,000次,在每次迭代過程中,同時處理整個訓練集;


       在這里,我們使用“.T”函數對矩陣求偏置。因此,數字將以這種方式存儲:

如何使用python創建網絡模型吧

       最終,神經元的權重將針對所提供的訓練數據進行優化。因此,如果神經網絡的輸出與期望的輸出一致時,說明訓練完成,可以進行準確的預測,這就是反向傳播的方式。      

封裝

       最后,初始化NeuralNetwork類后并運行整個程序,以下是如何在Python項目中創建神經網絡的完整代碼:

import numpy as npclass NeuralNetwork():
    
    def __init__(self):
        # 設置隨機數種子
        np.random.seed(1)        
        # 將權重轉化為一個3x1的矩陣,其值分布為-1~1,并且均值為0
        self.synaptic_weights = 2 * np.random.random((3, 1)) - 1

    def sigmoid(self, x):
        # 應用sigmoid激活函數
        return 1 / (1 + np.exp(-x))    def sigmoid_derivative(self, x):
        #計算Sigmoid函數的偏導數
        return x * (1 - x)    def train(self, training_inputs, training_outputs, training_iterations):
        
        # 訓練模型
        for iteration in range(training_iterations):            # 得到輸出
            output = self.think(training_inputs)            # 計算誤差
            error = training_outputs - output            
            # 微調權重
            adjustments = np.dot(training_inputs.T, error * self.sigmoid_derivative(output))

            self.synaptic_weights += adjustments    def think(self, inputs):
        # 輸入通過網絡得到輸出   
        # 轉化為浮點型數據類型
        
        inputs = inputs.astype(float)
        output = self.sigmoid(np.dot(inputs, self.synaptic_weights))        return outputif __name__ == "__main__":    # 初始化神經類
    neural_network = NeuralNetwork()

    print("Beginning Randomly Generated Weights: ")
    print(neural_network.synaptic_weights)    #訓練數據
    training_inputs = np.array([[0,0,1],
                                [1,1,1],
                                [1,0,1],
                                [0,1,1]])

    training_outputs = np.array([[0,1,1,0]]).T    # 開始訓練
    neural_network.train(training_inputs, training_outputs, 15000)

    print("Ending Weights After Training: ")
    print(neural_network.synaptic_weights)

    user_input_one = str(input("User Input One: "))
    user_input_two = str(input("User Input Two: "))
    user_input_three = str(input("User Input Three: "))
    
    print("Considering New Situation: ", user_input_one, user_input_two, user_input_three)
    print("New Output data: ")
    print(neural_network.think(np.array([user_input_one, user_input_two, user_input_three])))
    print("Wow, we did it!")
 

       以下是運行代碼后產生的輸出:

如何使用python創建網絡模型吧

       以上是我們設法創建的一個簡單的神經網絡。首先神經網絡開始為自己分配一些隨機權,此后,它使用訓練樣例訓練自身。
       因此,如果出現新的樣本輸入[1,0,0],則其輸出值為0.9999584。而期望的的正確答案是1,可以說二者是非常接近了,考慮到Sigmoid函數是非線性函數,這點誤差是可以接受的。

看完上述內容,你們對如何使用python創建網絡模型吧有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

若羌县| 华池县| 西藏| 拜泉县| 北碚区| 鹿邑县| 清远市| 寻甸| 新丰县| 台东市| 彰武县| 阳山县| 汶上县| 延川县| 区。| 昌江| 阿拉尔市| 宿迁市| 抚远县| 松原市| 寿阳县| 额尔古纳市| 突泉县| 安平县| 密山市| 东乌珠穆沁旗| 平阴县| 三亚市| 大英县| 庆云县| 行唐县| 柳州市| 容城县| 林州市| 寿阳县| 聊城市| 陆良县| 常熟市| 安多县| 灵台县| 嘉善县|