我對BP網路的簡單的理解
阿新 • • 發佈:2018-11-10
最近在學習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)
去掉了所有的訓練過程,也沒有應用到具體的場景,儘可能把模型描繪一下,自己的理解,理解的不對請大家指正。