1. 程式人生 > >我對BP網路的簡單的理解

我對BP網路的簡單的理解

最近在學習tf的神經網路演算法,十多年沒有學習過數學了,本來高中數學的基礎,已經徹底還給數學老師了。所以我把各種函式、公式和推導當做黑盒子來用,理解他們能做到什麼效果,至於他們是如何做到的,暫時不去深究,最多知道哪個公式的效果會比哪個更適合哪個場合。

BP網路應該是最入門級的演算法了。

    #用虛擬碼描述下大概如此
    # 單層BP
x = tf.placeholder(tf.float32,[None,256])
y = tf.placeholder(tf.float32,[None,10])

w = tf.Variable(tf.random_normal([256,10]))
b = tf.Variable(tf.zeros([10]))

pred = tf.nn.softmax(tf.multiply(w,x)+b)
loss = tf.reduce_sum(-pred*tf.log(y))
op = tf.train.GradientDescentOptimizer(0.001).minimize(loss)
多層網路
x = tf.placeholder(tf.float32,[None,256])
y = tf.placeholder(tf.float32,[None,10])

w1 = tf.Variable(tf.random_normal([256,1024]))
b1 = tf.Variable(tf.zeros([1024]))

x1 = tf.nn.relu(tf.multiply(w1,x)+b1)

w2 = tf.Variable(tf.random_normal(1024,10))
b2 = tf.Variable(tf.zeros([10]))
pred = tf.nn.softmax(tf.multiply(w2,x1)+b2)
loss = -tf.reduce_sum(pred*tf.log(y))
op = tf.train.GradientDescentOptimizer(0.001).minimize(loss)

去掉了所有的訓練過程,也沒有應用到具體的場景,儘可能把模型描繪一下,自己的理解,理解的不對請大家指正。