婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 教你使用Python建立任意層數的深度神經網絡

教你使用Python建立任意層數的深度神經網絡

熱門標簽:地圖標注與注銷 西青語音電銷機器人哪家好 電梯新時達系統外呼顯示e 成都呼叫中心外呼系統哪家強 無錫智能外呼系統好用嗎 宿州電話機器人哪家好 南昌地圖標注 旅游廁所地圖標注怎么弄 百應電話機器人總部

一、神經網絡介紹:

  神經網絡算法參考人的神經元原理(軸突、樹突、神經核),在很多神經元基礎上構建神經網絡模型,每個神經元可看作一個個學習單元。這些神經元采納一定的特征作為輸入,根據自身的模型得到輸出。

圖1 神經網絡構造的例子(符號說明:上標[l]表示與第l層;上標(i)表示第i個例子;下標i表示矢量第i項)

圖2 單層神經網絡示例

神經元模型是先計算一個線性函數(z=Wx+b),接著再計算一個激活函數。一般來說,神經元模型的輸出值是a=g(Wx+b),其中g是激活函數(sigmoid,tanh, ReLU, …)。

二、數據集

假設有一個很大的數據庫,里面記錄了很多天氣數據,例如,氣溫、濕度、氣壓和降雨率。

問題陳述:

一組訓練數據m_train,下雨標記為(1),不下雨標記為(0)。

一個測試數據組m_test,標記是否下雨。

每一個天氣數據包含x1=氣溫,x2=濕度,x3=氣壓。

機器學習中一個常見的預處理步驟是將數據集居中并標準化,這意味著從每個示例中減去整個numpy數組的平均值,然后將每個示例除以整個numpy數組的標準偏差。

  通用方法(建立部分算法)

  使用深度學習來建造模型

  1. 定義模型構造(例如,數據的輸入特征)

  2. 初始化參數并定義超參數(迭代次數、在神經網絡中的L層的層數、隱藏層大小、學習率α)

  3. 迭代循環(正向傳播(計算電流損耗)、計算成本函數、反向傳播(計算電流損耗)、升級參數(使用背景參數和梯度))

  4. 使用訓練參數來預測標簽(初始化)

更深層次的L-層神經網絡的初始化更為復雜,因為有更多的權重矩陣和偏置向量。下表展示了不同結構的各種層級。

表1 L層的權重矩陣w、偏置向量b和激活函數z

表2 示例架構中的神經網絡權重矩陣w、偏置向量b和激活函數z

表2幫助我們為圖1中的示例神經網絡架構的矩陣準備了正確的維度。

import numpy as np
import matplotlib.pyplot as plt
nn_architecture = [
{"layer_size": 4,"activation": "none"}, # input layer
{"layer_size": 5,"activation": "relu"},
{"layer_size": 4,"activation": "relu"},
{"layer_size": 3,"activation": "relu"},
{"layer_size": 1,"activation": "sigmoid"}
]
def initialize_parameters(nn_architecture, seed = 3):
np.random.seed(seed)
# python dictionary containingour parameters "W1", "b1", ..., "WL","bL"
parameters = {}
number_of_layers = len(nn_architecture)
for l in range(1,number_of_layers):
parameters['W' + str(l)] =np.random.randn(
nn_architecture[l]["layer_size"],
nn_architecture[l-1]["layer_size"]
) * 0.01
parameters['b' + str(l)] =np.zeros((nn_architecture[l]["layer_size"], 1))
return parameters

代碼段1 參數初始化

  使用小隨機數初始化參數是一種簡單的方法,但同時也保證算法的起始值足夠好。

記?。?/p>

  • 不同的初始化工具,例如Zero,Random, He or Xavier,都會導致不同的結果。
  • 隨機初始化能夠確保不同的隱藏單元可以學習不同的東西(初始化所有權重為零會導致,所有層次的所有感知機都將學習相同的東西)。
  • 不要初始化為太大的值

三、激活函數

  激活函數的作用是為了增加神經網絡的非線性。下例將使用sigmoid and ReLU。

  Sigmoid輸出一個介于0和1之間的值,這使得它成為二進制分類的一個很好的選擇。如果輸出小于0.5,可以將其分類為0;如果輸出大于0.5,可以將其分類為1。

def sigmoid(Z):
    S = 1 / (1 + np.exp(-Z))
    return S

def relu(Z):
    R = np.maximum(0, Z)
    return R

def sigmoid_backward(dA, Z):
    S = sigmoid(Z)
    dS = S * (1 - S)
    return dA * dS

def relu_backward(dA, Z):
    dZ = np.array(dA, copy=True)
    dZ[Z = 0] = 0
    return dZ

  代碼段2 Sigmoid和ReLU激活函數,及其衍生物

  在代碼段2中,可以看到激活函數及其派生的矢量化編程實現。該代碼將用于進一步的計算。

四、正向傳播

  在正向傳播中,在層l的正向函數中,需要知道該層中的激活函數是哪一種(sigmoid、tanh、ReLU等)。前一層的輸出值為這一層的輸入值,先計算z,再用選定的激活函數計算。

圖3 神經網絡的正向傳播

線性正向模塊(對所有示例進行矢量化)計算以下方程式:

方程式1 線性正向函數

def L_model_forward(X, parameters, nn_architecture):
    forward_cache = {}
    A = X
    number_of_layers = len(nn_architecture)
    
for l in range(1, number_of_layers):
    A_prev = A
    W = parameters['W' + str(l)]
    b = parameters['b' + str(l)]
    activation = nn_architecture[l]["activation"]
    Z, A = linear_activation_forward(A_prev, W, b, activation)
    forward_cache['Z' + str(l)] = Z
    forward_cache['A' + str(l)] = A
    AL = A
return AL, forward_cache

def linear_activation_forward(A_prev, W, b, activation):
    if activation == "sigmoid":
        Z = linear_forward(A_prev, W, b)
        A = sigmoid(Z)
    elif activation == "relu":
        Z = linear_forward(A_prev, W, b)
        A = relu(Z)
    return Z, A

def linear_forward(A, W, b):
    Z = np.dot(W, A) + b
    return Z

代碼段3 正向傳播模型

使用“cache”(python字典包含為特定層所計算的a和z值)以在正向傳播至相應的反向傳播期間傳遞變量。它包含用于反向傳播計算導數的有用值。

五、損失函數

  為了管程學習過程,需要計算代價函數的值。下面的公式用于計算成本。

  方程式2 交叉熵成本

def compute_cost(AL, Y):
    m = Y.shape[1]
    # Compute loss from AL and y
    logprobs = np.multiply(np.log(AL), Y) + np.multiply(1 - Y, np.log(1 - AL))
    # cross-entropy cost
    cost = - np.sum(logprobs) / m
    cost = np.squeeze(cost)
    return cost

代碼段4 代價函數的計算

六、反向傳播

  反向傳播用于計算參數的損失函數梯度。該算法是由微分學中已知的“鏈規則”遞歸使用的。

  反向傳播計算中使用的公式:

方程式3 反向傳播計算公式

  鏈式法則是計算復合函數導數的公式。復合函數就是函數套函數。

方程式4 鏈規則示例

  “鏈規則”在計算損失時十分重要(以方程式5為例)。

方程式5 損失函數(含替換數據)及其相對于第一權重的導數

  神經網絡模型反向傳播的第一步是計算最后一層損失函數相對于z的導數。方程式6由兩部分組成:方程式2損失函數的導數(關于激活函數)和激活函數“sigmoid”關于最后一層Z的導數。

方程式6 從4層對z的損失函數導數

  方程式6的結果可用于計算方程式3的導數。

方程式7 損失函數相對于3層的導數

  在進一步計算中,使用了與第三層激活函數有關的損失函數的導數(方程式7)。

方程式8 第三層的導數

方程式7的結果和第三層活化函數“relu”的導數用于計算方程式8的導數(損失函數相對于z的導數)。然后,我們對方程式3進行了計算。

我們對方程9和10做了類似的計算。

方程式9 第二層的導數

方程式10 第一層的導數

七、總體思路

從第一層層對z的損失函數導數有助于計算(L-1)層(上一層)對損失函數的導數。結果將用于計算激活函數的導數。

圖4 神經網絡的反向傳播

def L_model_backward(AL, Y, parameters, forward_cache, nn_architecture):
    grads = {}
    number_of_layers =len(nn_architecture)
    m = AL.shape[1]
    Y = Y.reshape(AL.shape) # afterthis line, Y is the same shape as AL
    # Initializing thebackpropagation
    dAL = - (np.divide(Y, AL) -np.divide(1 - Y, 1 - AL))
    dA_prev = dAL
    for l in reversed(range(1,number_of_layers)):
        dA_curr = dA_prev
        activation =nn_architecture[l]["activation"]
        W_curr = parameters['W' +str(l)]
        Z_curr = forward_cache['Z' +str(l)]
        A_prev = forward_cache['A' +str(l-1)]
        dA_prev, dW_curr, db_curr =linear_activation_backward(dA_curr, Z_curr, A_prev, W_curr, activation)
        grads["dW" +str(l)] = dW_curr
        grads["db" +str(l)] = db_curr
    return grads
def linear_activation_backward(dA, Z, A_prev, W, activation):
    if activation =="relu":
        dZ = relu_backward(dA, Z)
        dA_prev, dW, db =linear_backward(dZ, A_prev, W)
    elif activation =="sigmoid":
        dZ = sigmoid_backward(dA, Z)
        dA_prev, dW, db =linear_backward(dZ, A_prev, W)
    return dA_prev, dW, db
def linear_backward(dZ, A_prev, W):
    m = A_prev.shape[1]
    dW = np.dot(dZ, A_prev.T) / m
    db = np.sum(dZ, axis=1,keepdims=True) / m
    dA_prev = np.dot(W.T, dZ)
    return dA_prev, dW, db

代碼段5 反向傳播模塊

更新參數

  該函數的目標是通過梯度優化來更新模型的參數。

def update_parameters(parameters, grads, learning_rate):
    L = len(parameters)
    for l in range(1, L):
        parameters["W" +str(l)] = parameters["W" + str(l)] - learning_rate *grads["dW" + str(l)]
        parameters["b" +str(l)] = parameters["b" + str(l)] - learning_rate *grads["db" + str(l)]
    return parameters

全模型

神經網絡模型的完整實現包括在片段中提供的方法。

def L_layer_model(X, Y, nn_architecture, learning_rate = 0.0075,num_iterations = 3000, print_cost=False):
    np.random.seed(1)
    # keep track of cost
    costs = []
    # Parameters initialization.
    parameters =initialize_parameters(nn_architecture)
    # Loop (gradient descent)
    for i in range(0,num_iterations):
    # Forward propagation:[LINEAR -> RELU]*(L-1) -> LINEAR -> SIGMOID.
        AL, forward_cache =L_model_forward(X, parameters, nn_architecture)
        # Compute cost.
        cost = compute_cost(AL, Y)
        # Backward propagation.
        grads = L_model_backward(AL,Y, parameters, forward_cache, nn_architecture)
        # Update parameters.
        parameters =update_parameters(parameters, grads, learning_rate)
        # Print the cost every 100training example
        if print_cost and i % 100 ==0:
            print("Cost afteriteration %i: %f" %(i, cost))
            costs.append(cost)
            # plot the cost
    plt.plot(np.squeeze(costs))
    plt.ylabel('cost')
    plt.xlabel('iterations (pertens)')
    plt.title("Learning rate=" + str(learning_rate))
    plt.show()
    return parameters

代碼段7 整個神經網絡模型

只需要將已知的權重和系列測試數據,應用于正向傳播模型,就能預測結果。

  可以修改snippet1中的nn_架構,以構建具有不同層數和隱藏層大小的神經網絡。此外,準備正確實現激活函數及其派生函數(代碼段2)。所實現的函數可用于修改代碼段3中的線性正向激活方法和代碼段5中的線性反向激活方法。

進一步改進

  如果訓練數據集不夠大,則可能面臨“過度擬合”問題。這意味著所學的網絡不會概括為它從未見過的新例子。可以使用正則化方法,如L2規范化(它包括適當地修改成本函數)或退出(它在每次迭代中隨機關閉一些感知機)。

  我們使用梯度下降來更新參數和最小化成本。你可以學習更多高級優化方法,這些方法可以加快學習速度,甚至可以為成本函數提供更好的最終價值,例如:

  •   小批量梯度下降
  •   動力
  •   Adam優化器

參考:http://www.uml.org.cn/ai/201911251.asp

到此這篇關于Python建立任意層數的深度神經網絡的文章就介紹到這了,更多相關Python神經網絡內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • numpy創建神經網絡框架
  • python神經網絡編程之手寫數字識別
  • python機器學習之神經網絡
  • pytorch動態神經網絡(擬合)實現
  • Python如何使用神經網絡進行簡單文本分類
  • pytorch之深度神經網絡概念全面整理

標簽:雅安 贛州 許昌 渭南 七臺河 西安 辛集 濰坊

巨人網絡通訊聲明:本文標題《教你使用Python建立任意層數的深度神經網絡》,本文關鍵詞  教你,使用,Python,建立,任意,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《教你使用Python建立任意層數的深度神經網絡》相關的同類信息!
  • 本頁收集關于教你使用Python建立任意層數的深度神經網絡的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品一卡二卡| 亚洲三级视频在线观看| 成人免费观看男女羞羞视频| 一本色道a无线码一区v| 欧美色爱综合网| 国产精品国产三级国产aⅴ无密码| 成人午夜视频在线| 一区二区三区国产精品| 水野朝阳av一区二区三区| 国产三级精品视频| 久久精品视频在线看| 亚洲欧美日韩精品久久久久| 国产精品白丝在线| 国产成人精品一区二区三区四区| 日本道在线观看一区二区| 亚洲综合无码一区二区| 91精品国产一区二区三区蜜臀| 日本不卡一二三区黄网| www国产精品av| 国产精品美女一区二区在线观看| 国产69精品久久久久777| 国产91色综合久久免费分享| 亚洲一区二区在线播放相泽| 欧美日韩中字一区| 久久精品国产久精国产爱| 国产婷婷精品av在线| 91麻豆国产福利在线观看| 性做久久久久久久免费看| 欧美在线一区二区三区| 亚洲综合免费观看高清完整版在线| 成人禁用看黄a在线| 久久久久久日产精品| 91免费版在线| 国产福利一区二区三区视频在线| 亚洲女厕所小便bbb| 色先锋资源久久综合| 日本大胆欧美人术艺术动态| 91精品国产91久久久久久最新毛片| 91激情五月电影| 亚洲欧美激情小说另类| 久久久噜噜噜久久人人看| 日韩欧美黄色影院| 欧美肥胖老妇做爰| 在线综合+亚洲+欧美中文字幕| 在线观看网站黄不卡| 91黄色小视频| 在线播放欧美女士性生活| 欧美无乱码久久久免费午夜一区 | 国产女同性恋一区二区| 国产精品区一区二区三区 | 97精品电影院| 欧美日韩精品三区| 久久综合国产精品| 久久超碰97人人做人人爱| 一区二区三区资源| 国产91露脸合集magnet| 捆绑变态av一区二区三区| 综合久久综合久久| 91精品国产免费| 91精品国产福利| av电影在线观看不卡| 《视频一区视频二区| 国产日产欧美一区二区三区| 亚洲天堂免费看| 久久99久久99| 成人激情小说网站| 欧美视频一二三区| 中文幕一区二区三区久久蜜桃| 韩国三级电影一区二区| 国模一区二区三区白浆| 欧洲一区二区三区在线| 久久一区二区三区四区| 日韩美女视频19| 国内精品久久久久影院薰衣草| 色欲综合视频天天天| 国产喷白浆一区二区三区| 久久丁香综合五月国产三级网站| 色综合天天综合网国产成人综合天| 欧美中文字幕一二三区视频| 91精品国产丝袜白色高跟鞋| 老汉av免费一区二区三区| 成人午夜av影视| 国产三区在线成人av| 国产经典欧美精品| 2020日本不卡一区二区视频| 久久99久久精品欧美| 欧美日韩成人激情| 亚洲精品免费电影| 91浏览器在线视频| 中文字幕一区二区视频| 成人精品高清在线| 日韩精品中文字幕在线一区| 久久99国产精品免费网站| 欧美精品一区二区三区蜜桃| 奇米精品一区二区三区在线观看一| aaa亚洲精品一二三区| 亚洲欧洲日韩一区二区三区| 99久久777色| 亚洲一本大道在线| 91.成人天堂一区| 精品午夜久久福利影院| 26uuuu精品一区二区| 成人性生交大片免费看中文 | 国产精品小仙女| 日韩一级欧美一级| 国产一区高清在线| 中文字幕一区二区三区乱码在线| 91香蕉视频在线| 蜜桃久久久久久| 欧美国产97人人爽人人喊| 91丝袜美腿高跟国产极品老师 | 3atv一区二区三区| 国产一区二区三区香蕉| 一区二区三区在线视频观看| 精品欧美乱码久久久久久1区2区| 国产精品自拍网站| 亚洲mv在线观看| 国产欧美综合在线| 制服视频三区第一页精品| 国产在线看一区| 亚洲猫色日本管| 国产精品美女久久久久高潮| 制服视频三区第一页精品| 色88888久久久久久影院按摩| 国产一区二区调教| 三级在线观看一区二区| 亚洲男人都懂的| 中文字幕二三区不卡| 久久久久综合网| 久久综合久久鬼色| 日韩欧美色综合网站| 日本二三区不卡| 色狠狠桃花综合| 99精品国产99久久久久久白柏| 免费看日韩a级影片| 日产欧产美韩系列久久99| 亚洲3atv精品一区二区三区| 亚洲高清在线视频| 亚洲第一福利视频在线| 亚洲午夜一区二区三区| 亚洲r级在线视频| 日韩精品五月天| 奇米影视一区二区三区小说| 麻豆91在线观看| av在线播放一区二区三区| www.亚洲免费av| 国产精品久久久久久久久久久免费看 | 综合自拍亚洲综合图不卡区| 欧美激情艳妇裸体舞| 亚洲综合色网站| 免费高清视频精品| 91亚洲资源网| 国产成人av影院| 韩国av一区二区三区四区| 大尺度一区二区| 日韩视频在线一区二区| 亚洲另类在线一区| 国产精品香蕉一区二区三区| 日本精品一区二区三区高清 | 日本不卡一区二区| 欧洲人成人精品| 国产传媒日韩欧美成人| 精品综合久久久久久8888| 久久久精品蜜桃| 在线观看www91| 99re这里只有精品6| 欧洲人成人精品| 色婷婷久久一区二区三区麻豆| 丁香激情综合国产| www.日韩av| 国产精品一二三四| 日韩专区一卡二卡| 美日韩一区二区| 欧美激情一区二区三区不卡| 久久久久久久性| 亚洲视频狠狠干| 欧美午夜在线一二页| 成人免费一区二区三区视频| 免费观看久久久4p| 91麻豆蜜桃一区二区三区| 欧美一级高清片| 精品一区二区三区在线观看国产 | a亚洲天堂av| 中文字幕人成不卡一区| av中文字幕亚洲| 成人涩涩免费视频| 国产精品视频一区二区三区不卡| 亚洲一二三四在线观看| 91色婷婷久久久久合中文| 亚洲同性同志一二三专区| 成人的网站免费观看| 午夜免费欧美电影| 亚洲综合视频在线观看| 91污在线观看| 亚洲丝袜另类动漫二区| 欧美一区二区日韩| 秋霞电影一区二区| 亚洲自拍偷拍麻豆| 亚洲精品在线免费观看视频| 精品一区二区三区视频在线观看|