常見的神經網路的優化方法

2021-09-30 14:25:36 字數 2727 閱讀 4818

sigmoid也有缺點,在反向傳播中,經過多層傳遞之後,梯度值會指數級地急劇減小(蓋由兩側平緩曲線引起),這使得引數的更新變得十分緩慢,若迭代次數不多,將會錯過最優解。因此使用relu函式,可以彌補這種梯度瀰散的問題。

當然,在最終輸出層我們依然使用sigmoid函式,因為其最接近概率輸出分布。
keep_prob=tf.placeholder(tf.float32)
hidden1_drop=tf.nn.dropout(hidden1,keep_prob)

y=tf.nn.softmax(tf.matmul(hidden1_drop,w2)+b2)

dropout方法,太經典了!由於神經網路強大的函式模擬能力,使得經常出現過擬合的現象。dropout思路簡單,卻非常有效!其思路大致為,在訓練時,將神經網路某一層的輸出節點資料隨機丟棄一部分。例如隨機將一張的50%的資料刪除點,變為黑點,其實質相當於創造出了很多新的隨機樣本,通過增大樣本量,減小特徵數量來防止過擬合。
好比有一張狗狗的,當你將中隨機的,按照一定百分比的畫素丟棄,你有很大可能依然能夠認出這是狗狗的,而這些隨機畫素點,很有可能抹去一些非狗狗獨有的特徵,比如狗狗戴的裝飾等等(……)這個方法對於之後將要學習的卷積神經網路訓練過程十分有效。
y_=tf.placeholder(tf.float32,[none,10])

cross_entropy=tf.reduce_mean(-tf.reduce_sum(y_*tf.log(y),reduction_indices=[1]))

train_step=tf.train.adagradoptimizer(0.3).minimize(cross_entropy)

tf.global_variables_initializer().run()

這裡我們不再使用sgd,而是介紹一種新的方法adagrad。通常我們對所有引數使用的學習速率都是一樣的。但事實上迭代多輪之後,有的引數只需要微調,有的引數的步長依然要很大才能繼續加速收斂。我們只需要定義最初的學習速率,之後的運算中,adagrad會自適應地為各個引數分配不同的學習速率。這裡不詳細說明,有興趣的同學可以看看。當然也不是說sgd不好用,這裡只是多介紹一種引數的優化方法。事實上經過驗證,在這些手寫字型樣本上,差別不大。最主要的還是dropout帶來得精度的質的飛躍。
foriinrange(3000):

batch_xs,batch_ys=mnist.train.next_batch(100)

train_step.run()#在訓練時保留75%的節點correct_prediction=tf.equal(tf.argmax(y,

1),tf.argmax(y_,1))

accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))

print

(accuracy.eval())#在測試時,顯然要用100%的資料

執行**後,看看最後結果,這些輔助方法確實幫我們提高了不少的準確率!當然認真的我們發現,乙個神經網路模型下來,有太多的引數需要定義了,最麻煩的是,有時候,一些引數的初始定義,對最後的**準確率影響很大,例如sdg中的學習速率,迭代次數,隱層節點數,隱層數……要達到最大準確率,引數的設定經驗還蠻重要的,這就很麻煩,尤其是通常情況下,訓練的花費的時間還很長……
不過即使你花了好幾天,終於找到了乙個(→_→)最優的引數組合,即可能使用了很多隱層,很多節點,很多迭代輪次,依然不能將準確度提公升到99%以上這樣的程度,這種全連線神經網路也是有上限。下一波,我們要開卷積神經網路的車。。。預訂車票了先。。。

常見的神經網路

由於新的神經網路架構無時無刻不在湧現,想要記錄所有的神經網路是很困難的事情。要把所有這些縮略語指代的網路 dcign,iilstm,dcgan等 都弄清,一開始估計還無從下手。下表包含了大部分常用的模型 大部分是神經網路還有一些其他的模型 雖然這些架構都是新奇獨特的,但當我開始把它們的結果畫下來的時...

神經網路優化

import tensorflow as tf from tensorflow.examples.tutorials.mnist import input data 載入資料集 mnist input data.read data sets mnist data one hot true 每個批次的...

優化神經網路的方法,加速訓練

1.bgd法。batch gradient descent批梯度下降 2.sgd法。stochastic gradient descent隨機梯度下降,也稱mbgd minibatch gradient descent 3.momentum法。模擬動量 4.nesterov momentum法,對3...