<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        神經網絡(BP)算法Python實現及應用

        來源:懂視網 責編:小OO 時間:2020-11-27 14:12:56
        文檔

        神經網絡(BP)算法Python實現及應用

        本文實例為大家分享了Python實現神經網絡算法及應用的具體代碼,供大家參考,具體內容如下:首先用Python實現簡單地神經網絡算法。tanh';): ";";";神經網絡算法構造函數 :param layers: 神經元層數 :param activation: 使用的函數(默認tanh函數) :return:none ";";";if activation == ';logistic';: self.activation = logistic self.activation_deriv = logistic_derivative elif activation == ';tanh';"。
        推薦度:
        導讀本文實例為大家分享了Python實現神經網絡算法及應用的具體代碼,供大家參考,具體內容如下:首先用Python實現簡單地神經網絡算法。tanh';): ";";";神經網絡算法構造函數 :param layers: 神經元層數 :param activation: 使用的函數(默認tanh函數) :return:none ";";";if activation == ';logistic';: self.activation = logistic self.activation_deriv = logistic_derivative elif activation == ';tanh';"。
        這篇文章主要為大家詳細介紹了Python實現神經網絡(BP)算法及簡單應用,具有一定的參考價值,感興趣的小伙伴們可以參考一下

        本文實例為大家分享了Python實現神經網絡算法及應用的具體代碼,供大家參考,具體內容如下

        首先用Python實現簡單地神經網絡算法:

        import numpy as np
        
        
        # 定義tanh函數
        def tanh(x):
         return np.tanh(x)
        
        
        # tanh函數的導數
        def tan_deriv(x):
         return 1.0 - np.tanh(x) * np.tan(x)
        
        
        # sigmoid函數
        def logistic(x):
         return 1 / (1 + np.exp(-x))
        
        
        # sigmoid函數的導數
        def logistic_derivative(x):
         return logistic(x) * (1 - logistic(x))
        
        
        class NeuralNetwork:
         def __init__(self, layers, activation='tanh'):
         """
         神經網絡算法構造函數
         :param layers: 神經元層數
         :param activation: 使用的函數(默認tanh函數)
         :return:none
         """
         if activation == 'logistic':
         self.activation = logistic
         self.activation_deriv = logistic_derivative
         elif activation == 'tanh':
         self.activation = tanh
         self.activation_deriv = tan_deriv
        
         # 權重列表
         self.weights = []
         # 初始化權重(隨機)
         for i in range(1, len(layers) - 1):
         self.weights.append((2 * np.random.random((layers[i - 1] + 1, layers[i] + 1)) - 1) * 0.25)
         self.weights.append((2 * np.random.random((layers[i] + 1, layers[i + 1])) - 1) * 0.25)
        
         def fit(self, X, y, learning_rate=0.2, epochs=10000):
         """
         訓練神經網絡
         :param X: 數據集(通常是二維)
         :param y: 分類標記
         :param learning_rate: 學習率(默認0.2)
         :param epochs: 訓練次數(最大循環次數,默認10000)
         :return: none
         """
         # 確保數據集是二維的
         X = np.atleast_2d(X)
        
         temp = np.ones([X.shape[0], X.shape[1] + 1])
         temp[:, 0: -1] = X
         X = temp
         y = np.array(y)
        
         for k in range(epochs):
         # 隨機抽取X的一行
         i = np.random.randint(X.shape[0])
         # 用隨機抽取的這一組數據對神經網絡更新
         a = [X[i]]
         # 正向更新
         for l in range(len(self.weights)):
         a.append(self.activation(np.dot(a[l], self.weights[l])))
         error = y[i] - a[-1]
         deltas = [error * self.activation_deriv(a[-1])]
        
         # 反向更新
         for l in range(len(a) - 2, 0, -1):
         deltas.append(deltas[-1].dot(self.weights[l].T) * self.activation_deriv(a[l]))
         deltas.reverse()
         for i in range(len(self.weights)):
         layer = np.atleast_2d(a[i])
         delta = np.atleast_2d(deltas[i])
         self.weights[i] += learning_rate * layer.T.dot(delta)
        
         def predict(self, x):
         x = np.array(x)
         temp = np.ones(x.shape[0] + 1)
         temp[0:-1] = x
         a = temp
         for l in range(0, len(self.weights)):
         a = self.activation(np.dot(a, self.weights[l]))
         return a

        使用自己定義的神經網絡算法實現一些簡單的功能:

        小案例:

        X: Y
        0 0 0
        0 1 1
        1 0 1
        1 1 0

        from NN.NeuralNetwork import NeuralNetwork
        import numpy as np
        
        nn = NeuralNetwork([2, 2, 1], 'tanh')
        temp = [[0, 0], [0, 1], [1, 0], [1, 1]]
        X = np.array(temp)
        y = np.array([0, 1, 1, 0])
        nn.fit(X, y)
        for i in temp:
         print(i, nn.predict(i))

        發現結果基本機制,無限接近0或者無限接近1

        第二個例子:識別圖片中的數字

        導入數據:

        from sklearn.datasets import load_digits
        import pylab as pl
        
        digits = load_digits()
        print(digits.data.shape)
        pl.gray()
        pl.matshow(digits.images[0])
        pl.show()

        觀察下:大?。?1797, 64)

        數字0

        接下來的代碼是識別它們:

        import numpy as np
        from sklearn.datasets import load_digits
        from sklearn.metrics import confusion_matrix, classification_report
        from sklearn.preprocessing import LabelBinarizer
        from NN.NeuralNetwork import NeuralNetwork
        from sklearn.cross_validation import train_test_split
        
        # 加載數據集
        digits = load_digits()
        X = digits.data
        y = digits.target
        # 處理數據,使得數據處于0,1之間,滿足神經網絡算法的要求
        X -= X.min()
        X /= X.max()
        
        # 層數:
        # 
        輸出層10個數字 # 輸入層64因為圖片是8*8的,64像素 # 隱藏層假設100 nn = NeuralNetwork([64, 100, 10], 'logistic') # 分隔訓練集和測試集 X_train, X_test, y_train, y_test = train_test_split(X, y) # 轉化成sklearn需要的二維數據類型 labels_train = LabelBinarizer().fit_transform(y_train) labels_test = LabelBinarizer().fit_transform(y_test) print("start fitting") # 訓練3000次 nn.fit(X_train, labels_train, epochs=3000) predictions = [] for i in range(X_test.shape[0]): o = nn.predict(X_test[i]) # np.argmax:第幾個數對應最大概率值 predictions.append(np.argmax(o)) # 打印預測相關信息 print(confusion_matrix(y_test, predictions)) print(classification_report(y_test, predictions))

        結果:

        矩陣對角線代表預測正確的數量,發現正確率很多

        這張表更直觀地顯示出預測正確率:

        共450個案例,成功率94%

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        神經網絡(BP)算法Python實現及應用

        本文實例為大家分享了Python實現神經網絡算法及應用的具體代碼,供大家參考,具體內容如下:首先用Python實現簡單地神經網絡算法。tanh';): ";";";神經網絡算法構造函數 :param layers: 神經元層數 :param activation: 使用的函數(默認tanh函數) :return:none ";";";if activation == ';logistic';: self.activation = logistic self.activation_deriv = logistic_derivative elif activation == ';tanh';"。
        推薦度:
        標簽: 應用 及應用 python
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 三年片在线观看免费观看大全中国 | 亚洲精品亚洲人成在线观看| 人人狠狠综合久久亚洲| 女人18毛片水最多免费观看 | 精品久久久久久久久亚洲偷窥女厕| 91麻豆最新在线人成免费观看| 亚洲性猛交xx乱| 久久精品无码一区二区三区免费| 久久精品国产亚洲av麻豆蜜芽| 久久久久免费看黄A片APP| 亚洲国产日韩a在线播放| 免费永久在线观看黄网站| 一区二区三区免费在线视频| 国产亚洲午夜高清国产拍精品 | 一区二区三区视频免费观看| 亚洲欭美日韩颜射在线二| 久久免费精彩视频| 亚洲大香伊人蕉在人依线| 四虎影视大全免费入口| 永久免费观看黄网站| 亚洲高清国产AV拍精品青青草原 | 久久青草免费91线频观看站街| 亚洲欧洲日产国产最新| 在线免费观看一级毛片| 一级一级毛片免费播放| 99久久精品国产亚洲| 啦啦啦手机完整免费高清观看| 特级毛片爽www免费版| 久久久亚洲精品无码| 成人激情免费视频| 国产无遮挡色视频免费观看性色 | 久久久精品国产亚洲成人满18免费网站 | 好看的电影网站亚洲一区| 国产成人精品免费视频网页大全| 久久精品国产亚洲av品善| 久久亚洲国产中v天仙www| 国产成在线观看免费视频| 成人片黄网站色大片免费观看cn| 91亚洲国产成人久久精品网站 | 午夜亚洲av永久无码精品| 日本不卡免费新一区二区三区 |