簡單神經網路搭建 使用不同的損失函式實驗

2021-08-14 08:05:05 字數 1758 閱讀 5745

資料集:htru_2脈衝星二分類資料集(總樣本數為17898,正負樣本數的比值約為9:1)

本文先對loss function分別為mse和ce的情況,推導了使用梯度下降演算法對之前層的權重和偏置進行更新的公式;然後,用htru_2的資料集進行簡單的實驗。

二、實驗

一開始我採用了python3+tensorflow來實驗。我搭建了乙個簡單的5層神經網路,隱藏層的神經元個數分別為10,20,14個,學習率為0.5,學習衰減係數為0.99,正則項係數為0.0001,訓練步數為2500,平滑衰減率為0.99.將資料及按照訓練集於測試集樣本數目之比為9:1來劃分,隨機選取訓練集來實驗,得到的訓練精確度為90.8%。(這裡精確度是乙個沒什麼用的指標,因為資料的分布很不均衡)

不過由於我對tensorflow不太熟悉,所以沒有在此基礎上進一步做實驗。

然後我在虛擬機器上採用了python2+scikit-neuralnetwork來實驗。可能是因為版本較老的緣故,在使用sknn.mlp的classifier時,裡面用到了theano.tensor.signal中的downsample的max_pool_2d函式,可是downsample.py在新版本中已經沒有了(這應該是庫的不相容問題),所以我注釋掉了import downsample這個**,然後將downsample呼叫的max_pool_2d函式改為pool.pool_2d函式。這樣以後就可以執行了。

呼叫classifier是很方便的:

這裡用layer("str",units = num)來指定各層的結構(str表示啟用函式的型別,num為單層的神經元數目,啟用函式可以是:rectifier,sigmoid,tanh,explin,其中explin定義為:

這裡的f-socre達到了87%,算是乙個不錯的結果了。

接下來我進一步調整引數進行實驗(loss func 為 mse,新增了l2正則項),

得到的結果為:

調整loss func為cross entropy,使用l2正則項,

結果為:

調整為不新增正則項的mcc,結果為:

總的來說,使用cross entropy獲得了較好的結果。

簡單搭建神經網路

簡單的神經網路 準備,前傳,後傳,迭代 下面是乙個簡單的神經網路搭建的 coding utf 8 import tensorflow as tf import numpy as np batch size 8 seed 23455 基於seed產生隨機數 rng np.random.randomst...

簡單神經網路的搭建

coding utf 8 created on wed mar 14 09 50 13 2018 author 102121 from tensorflow.examples.tutorials.mnist import input data import tensorflow as tf 匯入mn...

神經網路的簡單搭建

bp神經網路是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。bp網路能學習和存貯大量的 輸入 輸出模式對映關係,而無需事前揭示描述這種對映關係的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷 調整網路的權值和閾值,使網路的誤差平方和最小。通俗一點講就是一種...