神經網路反向傳播尋找極小值小例項

2021-10-04 01:23:19 字數 1163 閱讀 8913

廢話不多說,放幾張圖上來。

找到這個函式的極小值點,用機器學習的方法,簡單來說就是利用梯度下降去更新權值。**如下:

import numpy as np

from mpl_tookkits.mplot3d import axes3d

from matplotlibs import pyplot as plt

import torch

def himmelblau(x):

return (x[0]**2 + x[1] - 1)**2 + (x[0] + x[1]**2 -7) **2

x=np.arange(-6,6,0.1)

y=np.arange(-6,6,0.1)

print('x,y range:',x.shape,y.shape)

x,y = np.meshgrid(x,y)

print('x,y maps:',x.shpe,y.shape)

z = himmelblau([x,y])

fig = plt.figure('himmelblau')

ax = fig.gca(prediction='3d')

ax.plot_su***ce(x,y,2)

ax.view_init(60,-30)

ax.set_xlabel('x')

ax.set_ylabel('y')

plt.show()

x=torch.tensor([0.,0.],requires_grad=true)

optimizer = torch.optim.adam([x],lr=1e-3)

for step in range(20000):

pred = himmelblau(x)

optimizer.zero_grad()

pred.backward()

optimizer.step()

if step % 2000 == 0:

print('step {}: x={}, f(x) = {}'.format(step,x.tolist(),pred.item()))

***這個人講的東西不錯的。

神經網路反向傳播理解

訓練神經網路的目標是 優化代價函式,使得代價函式找到乙個 全域性最小值或者區域性最小值。不管使用何種梯度下降演算法 bgd,sgd adam 都需要先算出各個引數的梯度。反向傳播的作用 就是快速算出所有引數的偏導數。求導數通常可以分為兩類,一類是直接用定義,第二類是公式法 包括鏈式法 定義法 定義法...

卷積神經網路反向傳播推導

以tensorflow的卷積神經網路為例 卷積 池 卷積 池 全連線 softmax c1層 卷積神經網路的輸入是28 28的矩陣 a 經過f1 個5 5的卷積核k1 i i 1,2,f1 的卷積生成f1 個24 24大小的feature maps c1 i co nv2 a,k1 i,v alid...

神經網路學習引入 反向傳播

反向傳播技術是神經網路的核心技術之一。如果乙個運算我們能夠使用計算圖表式出來,那麼我們就能夠利用反向傳播的方法,即從後往前遞迴地呼叫鏈式法則來計算梯度。乙個簡單的函式f x y,z x y zf x,y,z x y z f x,y,z x y z的計算圖如下所示。假設輸入為 x 2,y 5,z 4,...