廢話不多說,放幾張圖上來。
找到這個函式的極小值點,用機器學習的方法,簡單來說就是利用梯度下降去更新權值。**如下:
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,...