成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用 Python 繪制圖表理解神經(jīng)網(wǎng)絡(luò)

開發(fā) 后端 深度學(xué)習(xí)
在這篇文章中,我嘗試直觀地展示一個(gè)簡(jiǎn)單的前饋神經(jīng)網(wǎng)絡(luò)如何在訓(xùn)練過(guò)程中將一組輸入映射到不同的空間,以便更容易理解它們。

 Python中文社區(qū)(ID:python-china)

人工神經(jīng)網(wǎng)絡(luò) (ANN) 已成功應(yīng)用于許多需要人工監(jiān)督的日常任務(wù),但由于其復(fù)雜性,很難理解它們的工作方式和訓(xùn)練方式。

在這篇博客中,我們深入討論了神經(jīng)網(wǎng)絡(luò)是什么、它們是如何工作的,以及如何將它們應(yīng)用于諸如尋找異常值或預(yù)測(cè)金融時(shí)間序列之類的問(wèn)題。

在這篇文章中,我嘗試直觀地展示一個(gè)簡(jiǎn)單的前饋神經(jīng)網(wǎng)絡(luò)如何在訓(xùn)練過(guò)程中將一組輸入映射到不同的空間,以便更容易理解它們。

數(shù)據(jù)

為了展示它是如何工作的,首先我創(chuàng)建了一個(gè)“ toy”數(shù)據(jù)集。它包含 400 個(gè)均勻分布在兩個(gè)類(0 和 1)中的樣本,每個(gè)樣本具有兩個(gè)維度(X0 和 X1)。

注:所有數(shù)據(jù)均來(lái)自三個(gè)隨機(jī)正態(tài)分布,均值為 [-1, 0, 1],標(biāo)準(zhǔn)差為 [0.5, 0.5, 0.5]。

網(wǎng)絡(luò)架構(gòu)

下一步是定義ANN的結(jié)構(gòu),如下:

隱藏層的維度最小(2 個(gè)神經(jīng)元)以顯示網(wǎng)絡(luò)在 2D 散點(diǎn)圖中映射每個(gè)樣本的位置。

盡管前面的圖表沒(méi)有顯示,但每一層都有一個(gè)修改其輸出的激活函數(shù)。

•輸入層有一個(gè)linear激活函數(shù)來(lái)復(fù)制它的輸入值。

•隱藏層具有ReLU或tanh激活函數(shù)。

•輸出層有一個(gè)sigmoid激活函數(shù),可以將其輸入值“縮小”到 [0, 1] 范圍內(nèi)。

訓(xùn)練

除了網(wǎng)絡(luò)的架構(gòu)之外,神經(jīng)網(wǎng)絡(luò)的另一個(gè)關(guān)鍵方面是訓(xùn)練過(guò)程。訓(xùn)練 ANN 的方法有很多種,但最常見的是反向傳播過(guò)程。

反向傳播過(guò)程首先將所有訓(xùn)練案例(或一批)前饋到網(wǎng)絡(luò),然后優(yōu)化器根據(jù)損失函數(shù)計(jì)算“如何”更新網(wǎng)絡(luò)的權(quán)重,并根據(jù)學(xué)習(xí)率更新它們。

當(dāng)損失收斂、經(jīng)過(guò)一定數(shù)量的 epoch 或用戶停止訓(xùn)練時(shí),訓(xùn)練過(guò)程停止。一個(gè)epoch 表示所有的數(shù)據(jù)送入網(wǎng)絡(luò)中, 完成了一次前向計(jì)算 + 反向傳播的過(guò)程。

在我們的研究案例中,該架構(gòu)使用隱藏層中的 2 個(gè)不同激活函數(shù)(ReLU 和 Tanh)和 3 個(gè)不同的學(xué)習(xí)率(0.1、0.01 和 0.001)進(jìn)行訓(xùn)練。

在輸入樣本周圍,有一個(gè)“網(wǎng)格”點(diǎn),顯示模型為該位置的樣本提供的預(yù)測(cè)概率。這使得模型在訓(xùn)練過(guò)程中生成的邊界更加清晰。 

  1. # figure holding the evolution  
  2. f, axes = plt.subplots(1, 3, figsize=(18, 6), gridspec_kw={'height_ratios':[.9]})  
  3. f.subplots_adjust(top=0.82)  
  4. # camera to record the evolution  
  5. camera = Camera(f)  
  6. # number of epochs  
  7. epochs = 20  
  8. # iterate epoch times  
  9. for i in range(epochs):  
  10.     # evaluate the model (acc, loss)  
  11.     evaluation = model.evaluate(x_train, y_train, verbose=0 
  12.     # generate intermediate models  
  13.     model_hid_1 = Model(model.input, model.get_layer("hidden_1").output)  
  14.     model_act_1 = Model(model.input, model.get_layer("activation_1").output) 
  15.      # generate data  
  16.     df_hid_1 = pd.DataFrame(model_hid_1.predict(x_train), columns=['X0', 'X1'])  
  17.     df_hid_1['y'] = y_train  
  18.     df_act_1 = pd.DataFrame(model_act_1.predict(x_train), columns=['X0', 'X1'])  
  19.     df_act_1['y'] = y_train  
  20.     # generate meshgrid (200 values)  
  21.     x = np.linspace(x_train[:,0].min(), x_train[:,0].max(), 200)  
  22.     y = np.linspace(x_train[:,1].min(), x_train[:,1].max(), 200)  
  23.     xv, yv = np.meshgrid(x, y)  
  24.     # generate meshgrid intenisty  
  25.     df_mg_train = pd.DataFrame(np.stack((xv.flatten(), yv.flatten()), axis=1), columns=['X0', 'X1'])  
  26.     df_mg_train['y'] = model.predict(df_mg_train.values)  
  27.     df_mg_hid_1 = pd.DataFrame(model_hid_1.predict(df_mg_train.values[:,:-1]), columns=['X0', 'X1'])  
  28.     df_mg_hid_1['y'] = model.predict(df_mg_train.values[:,:-1])  
  29.     df_mg_act_1 = pd.DataFrame(model_act_1.predict(df_mg_train.values[:,:-1]), columns=['X0', 'X1'])  
  30.     df_mg_act_1['y'] = model.predict(df_mg_train.values[:,:-1])  
  31.     # show dataset        
  32.     ax = sns.scatterplot(x='X0'y='X1'data=df_mg_trainhue='y'x_jitter=Truey_jitter=Truelegend=Noneax=axes[0], palette=sns.diverging_palette(220, 20, as_cmap=True), alpha=0.15) 
  33.     ax = sns.scatterplot(x='X0'y='X1'data=df_trainhue='y'legend=Noneax=axes[0], palette=sns.diverging_palette(220, 20, n=2)) 
  34.     ax.set_title('Input layer')  
  35.     ax = sns.scatterplot(x='X0'y='X1'data=df_mg_hid_1hue='y'x_jitter=Truey_jitter=Truelegend=Noneax=axes[1], palette=sns.diverging_palette(220, 20, as_cmap=True), alpha=0.15) 
  36.     ax = sns.scatterplot(x='X0'y='X1'data=df_hid_1hue='y'legend=Noneax=axes[1], palette=sns.diverging_palette(220, 20, n=2)) 
  37.     ax.set_title('Hidden layer')  
  38.     # show the current epoch and the metrics  
  39.     ax.text(x=0.5, y=1.15, s='Epoch {}'.format(i+1), fontsize=16weight='bold'ha='center'va='bottom'transform=ax.transAxes)  
  40.     ax.text(x=0.5, y=1.08, s='Accuracy {:.3f} - Loss {:.3f}'.format(evaluation[1], evaluation[0]), fontsize=13ha='center'va='bottom'transform=ax.transAxes)  
  41.     ax = sns.scatterplot(x='X0'y='X1'data=df_mg_act_1hue='y'x_jitter=Truey_jitter=Truelegend=Noneax=axes[2], palette=sns.diverging_palette(220, 20, as_cmap=True), alpha=0.15) 
  42.     ax = sns.scatterplot(x='X0'y='X1'data=df_act_1hue='y'legend=Noneax=axes[2], palette=sns.diverging_palette(220, 20, n=2)) 
  43.     ax.set_title('Activation')  
  44.     # show the plot  
  45.     plt.show()  
  46.     # call to generate the GIF  
  47.     camera.snap()  
  48.     # stop execution if loss <= 0.263 (avoid looping 200 times if not needed)  
  49.     if evaluation[0] <= 0.263:  
  50.         break  
  51.     # train the model 1 epoch  
  52.     model.fit(x_train, y_train, epochs=1verbose=0

ReLU 激活

Tanh 激活

注意:使用的損失函數(shù)是二元交叉熵,因?yàn)槲覀冋谔幚矶诸悊?wèn)題,而優(yōu)化器是對(duì)原始隨機(jī)梯度下降 (SGD) 稱為 Adam 的修改。當(dāng)epoch達(dá)到 200 或損失低于 0.263 時(shí),模型訓(xùn)練停止。 

 

責(zé)任編輯:龐桂玉 來(lái)源: Python中文社區(qū)
相關(guān)推薦

2020-05-27 11:10:54

KerasLSTM神經(jīng)網(wǎng)絡(luò)

2023-05-16 07:44:03

紋理映射WebGL

2009-10-23 16:43:01

VB.NET繪制圖形

2011-06-30 15:09:37

QT 繪制 圖形

2023-09-07 08:24:35

圖形編輯器開發(fā)繪制圖形工具

2021-02-07 09:40:19

Python神經(jīng)網(wǎng)絡(luò)人工智能

2019-05-07 19:12:28

機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)Python

2018-07-03 16:10:04

神經(jīng)網(wǎng)絡(luò)生物神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)

2013-12-27 13:00:30

Android開發(fā)Android應(yīng)用Context Men

2020-09-08 13:02:00

Python神經(jīng)網(wǎng)絡(luò)感知器

2013-12-04 16:07:27

Android游戲引擎libgdx教程

2021-05-10 15:14:23

Python棒棒糖圖表

2023-01-04 11:18:21

Canvas 封裝pixi.js

2022-07-27 09:53:06

神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

2022-08-23 12:32:37

Python可視化圖表

2024-11-20 16:42:03

Python科學(xué)計(jì)算

2020-09-17 12:40:54

神經(jīng)網(wǎng)絡(luò)CNN機(jī)器學(xué)習(xí)

2020-12-19 11:05:57

循環(huán)神經(jīng)網(wǎng)絡(luò)PyTorch神經(jīng)網(wǎng)絡(luò)

2020-08-03 07:54:33

神經(jīng)網(wǎng)絡(luò)通用近似定理機(jī)器學(xué)習(xí)

2023-11-10 18:07:42

Python折線圖折線
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日本成人区 | 涩涩视频网站在线观看 | 午夜天堂精品久久久久 | 秋霞影院一区二区 | 亚洲视频三区 | 黄色大全免费看 | 欧美日韩成人一区二区 | 日本成人综合 | 天天爱爱网 | 亚洲精品免费在线 | 伊人在线| 日韩人体视频 | 午夜影院在线播放 | 国产福利一区二区 | 免费看国产片在线观看 | 国产激情99| 精品国产乱码久久久久久久久 | 超碰精品在线 | 日韩成人在线视频 | 麻豆久久久久久久久久 | 精品久久中文字幕 | 一级做a爰片性色毛片16 | 久久国产精品一区二区三区 | av一级在线观看 | 羞羞视频免费在线观看 | 欧美二区三区 | 一区二区三区四区免费在线观看 | 国产日韩久久久久69影院 | 久操伊人| 欧洲一区二区在线 | 国产成人网| 福利视频网站 | 午夜精品影院 | 亚洲视频一 | 免费在线播放黄色 | 超级碰在线 | 亚洲v区| 国产精品久久福利 | 欧美国产在线一区 | 成人免费毛片片v | 亚洲一区二区电影网 |