DL之DNN:基于神经网络(从1层~50层)DNN算法实现对非线性数据集点进行绘制决策边界
生活随笔
收集整理的這篇文章主要介紹了
DL之DNN:基于神经网络(从1层~50层)DNN算法实现对非线性数据集点进行绘制决策边界
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
DL之DNN:基于神經(jīng)網(wǎng)絡(luò)(從1層~50層)DNN算法實現(xiàn)對非線性數(shù)據(jù)集點進行繪制決策邊界
?
?
目錄
輸出結(jié)果
設(shè)計代碼
?
?
輸出結(jié)果
?
?
設(shè)計代碼
?
首先查看數(shù)據(jù)集
import numpy as np from sklearn.datasets import make_moons #make_moons數(shù)據(jù)集可以生成一些非線性數(shù)據(jù)點 import matplotlib.pyplot as plt# 手動生成一個隨機的平面點分布,并畫出來 np.random.seed(0) X, y = make_moons(200, noise=0.20) plt.scatter(X[:,0], X[:,1], s=40, c=y, cmap=plt.cm.Spectral) plt.title('make_moons generating nonlinear data points') plt.show() #設(shè)計一個簡單的人工神經(jīng)網(wǎng)絡(luò):輸入兩個值,輸出0或1,即第一類還是第二類,但DNN其實獲得是概率,如屬于0的概率是42% 。只包含一層隱藏層,即只對樣本點做交集而不做并集 #激活函數(shù)選擇tanh函數(shù),采用softmax分類器(LR的多分類),并且用互熵損失作為損失函數(shù)。BP計算梯度采用SGD算法num_examples = len(X) # 樣本數(shù) nn_input_dim = 2 # 輸入的維度 nn_output_dim = 2 # 輸出的類別個數(shù)# 梯度下降參數(shù) epsilon = 0.01 # 學(xué)習(xí)率 reg_lambda = 0.01 # 正則化參數(shù)# 定義損失函數(shù),以便使用梯度下降算法 def calculate_loss(model):W1, b1, W2, b2 = model['W1'], model['b1'], model['W2'], model['b2'] #因為隱藏層有500個神經(jīng)元,故b1是500維# 向前推進,前向運算z1 = X.dot(W1) + b1a1 = np.tanh(z1)z2 = a1.dot(W2) + b2exp_scores = np.exp(z2)probs = exp_scores / np.sum(exp_scores, axis=1, keepdims=True) #計算的屬于哪一類的是概率# 計算損失corect_logprobs = -np.log(probs[range(num_examples), y])data_loss = np.sum(corect_logprobs)# 也得加一下L2正則化項data_loss += reg_lambda/2 * (np.sum(np.square(W1)) + np.sum(np.square(W2)))return 1./num_examples * data_loss# 建立3個隱層的神經(jīng)網(wǎng)絡(luò) model = build_model(3, print_loss=True)# 然后再把決策/判定邊界畫出來 plot_decision_boundary(lambda x: predict(model, x)) plt.title("Decision Boundary for hidden layer size 3") #即是由500個神經(jīng)元(段直線),去交集得出的曲線 plt.show()?
# 然后觀察不同的隱藏層個數(shù)(1, 2, 3, 4, 5, 20, 50)對結(jié)果的影響 plt.figure(figsize=(16, 32)) hidden_layer_dimensions = [1, 2, 3, 4, 5, 20, 50] for i, nn_hdim in enumerate(hidden_layer_dimensions):plt.subplot(5, 2, i+1)plt.title('Hidden Layer size %d' % nn_hdim)model = build_model(nn_hdim)plot_decision_boundary(lambda x: predict(model, x)) plt.show()?
?
相關(guān)文章推薦
DL之LoR&DNN:Neural_network_example繪制非線性數(shù)據(jù)集點的決策邊界
總結(jié)
以上是生活随笔為你收集整理的DL之DNN:基于神经网络(从1层~50层)DNN算法实现对非线性数据集点进行绘制决策边界的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DL之DNN之BP:神经网络算法简介之B
- 下一篇: DL之AF:机器学习/深度学习中常用的激