【PyTorch深度学习三】梯度下降算法

import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]
w = 1.0

def forward(x):
    return x * w

def loss(x, y):
    y_pred = forward(x)
    return (y_pred-y) ** 2

def gradient(x, y):
    return 2 * x * (x * w - y)

print('Predict (before training)', 4, forward(4))

epoch_list = []
loss_list = []

for epoch in range(100):
    for x,y in zip(x_data, y_data):
        grad = gradient(x, y)
        w -= 0.01 * grad
        print('\tgrad:', x, y, grad)
        l = loss(x,y)
    epoch_list.append(epoch)
    loss_list.append(l)

print('Predict (after training)', 4, forward(4))

plt.plot(epoch_list, loss_list)
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.title('Cost in each epoch')
plt.show()



结果:

Predict (before training) 4 4.0
	grad: 1.0 2.0 -2.0
	grad: 2.0 4.0 -7.84
	grad: 3.0 6.0 -16.2288
	grad: 1.0 2.0 -1.478624
	grad: 2.0 4.0 -5.796206079999999
	grad: 3.0 6.0 -11.998146585599997
	grad: 1.0 2.0 -1.093164466688
	grad: 2.0 4.0 -4.285204709416961
	grad: 3.0 6.0 -8.87037374849311
	grad: 1.0 2.0 -0.8081896081960389
	grad: 2.0 4.0 -3.1681032641284723
	grad: 3.0 6.0 -6.557973756745939
	grad: 1.0 2.0 -0.59750427561463
	grad: 2.0 4.0 -2.3422167604093502
	grad: 3.0 6.0 -4.848388694047353
	grad: 1.0 2.0 -0.44174208101320334
	grad: 2.0 4.0 -1.7316289575717576
	grad: 3.0 6.0 -3.584471942173538
	grad: 1.0 2.0 -0.3265852213980338
	grad: 2.0 4.0 -1.2802140678802925
	grad: 3.0 6.0 -2.650043120512205
	grad: 1.0 2.0 -0.241448373202223
	grad: 2.0 4.0 -0.946477622952715
	grad: 3.0 6.0 -1.9592086795121197
	grad: 1.0 2.0 -0.17850567968888198
	grad: 2.0 4.0 -0.6997422643804168
	grad: 3.0 6.0 -1.4484664872674653
	grad: 1.0 2.0 -0.13197139106214673
	grad: 2.0 4.0 -0.5173278529636143
	grad: 3.0 6.0 -1.0708686556346834
	grad: 1.0 2.0 -0.09756803306893769
	grad: 2.0 4.0 -0.38246668963023644
	grad: 3.0 6.0 -0.7917060475345892
	grad: 1.0 2.0 -0.07213321766426262
	grad: 2.0 4.0 -0.2827622132439096
	grad: 3.0 6.0 -0.5853177814148953
	grad: 1.0 2.0 -0.05332895341780164
	grad: 2.0 4.0 -0.2090494973977819
	grad: 3.0 6.0 -0.4327324596134101
	grad: 1.0 2.0 -0.039426735209221686
	grad: 2.0 4.0 -0.15455280202014876
	grad: 3.0 6.0 -0.3199243001817109
	grad: 1.0 2.0 -0.02914865846100012
	grad: 2.0 4.0 -0.11426274116712065
	grad: 3.0 6.0 -0.2365238742159388
	grad: 1.0 2.0 -0.021549952984118992
	grad: 2.0 4.0 -0.08447581569774698
	grad: 3.0 6.0 -0.17486493849433593
	grad: 1.0 2.0 -0.015932138840594856
	grad: 2.0 4.0 -0.062453984255132156
	grad: 3.0 6.0 -0.12927974740812687
	grad: 1.0 2.0 -0.011778821430517894
	grad: 2.0 4.0 -0.046172980007630926
	grad: 3.0 6.0 -0.09557806861579543
	grad: 1.0 2.0 -0.008708224029438938
	grad: 2.0 4.0 -0.03413623819540135
	grad: 3.0 6.0 -0.07066201306448505
	grad: 1.0 2.0 -0.006438094523652627
	grad: 2.0 4.0 -0.02523733053271826
	grad: 3.0 6.0 -0.052241274202728505
	grad: 1.0 2.0 -0.004759760538470381
	grad: 2.0 4.0 -0.01865826131080439
	grad: 3.0 6.0 -0.03862260091336722
	grad: 1.0 2.0 -0.0035189480832178432
	grad: 2.0 4.0 -0.01379427648621423
	grad: 3.0 6.0 -0.028554152326460525
	grad: 1.0 2.0 -0.002601600545300009
	grad: 2.0 4.0 -0.01019827413757568
	grad: 3.0 6.0 -0.021110427464781978
	grad: 1.0 2.0 -0.001923394502346909
	grad: 2.0 4.0 -0.007539706449199102
	grad: 3.0 6.0 -0.01560719234984198
	grad: 1.0 2.0 -0.0014219886363191492
	grad: 2.0 4.0 -0.005574195454370212
	grad: 3.0 6.0 -0.011538584590544687
	grad: 1.0 2.0 -0.0010512932626940419
	grad: 2.0 4.0 -0.004121069589761106
	grad: 3.0 6.0 -0.008530614050808794
	grad: 1.0 2.0 -0.0007772337246287897
	grad: 2.0 4.0 -0.0030467562005451754
	grad: 3.0 6.0 -0.006306785335127074
	grad: 1.0 2.0 -0.0005746182194226179
	grad: 2.0 4.0 -0.002252503420136165
	grad: 3.0 6.0 -0.00466268207967957
	grad: 1.0 2.0 -0.0004248221450375844
	grad: 2.0 4.0 -0.0016653028085471533
	grad: 3.0 6.0 -0.0034471768136938863
	grad: 1.0 2.0 -0.00031407610969225175
	grad: 2.0 4.0 -0.0012311783499932005
	grad: 3.0 6.0 -0.0025485391844828342
	grad: 1.0 2.0 -0.00023220023680847746
	grad: 2.0 4.0 -0.0009102249282886277
	grad: 3.0 6.0 -0.0018841656015560204
	grad: 1.0 2.0 -0.00017166842147497974
	grad: 2.0 4.0 -0.0006729402121816719
	grad: 3.0 6.0 -0.0013929862392156878
	grad: 1.0 2.0 -0.0001269165240174175
	grad: 2.0 4.0 -0.0004975127741477792
	grad: 3.0 6.0 -0.0010298514424817995
	grad: 1.0 2.0 -9.383090920422887e-05
	grad: 2.0 4.0 -0.00036781716408107457
	grad: 3.0 6.0 -0.0007613815296476645
	grad: 1.0 2.0 -6.937031714571162e-05
	grad: 2.0 4.0 -0.0002719316432120422
	grad: 3.0 6.0 -0.0005628985014531906
	grad: 1.0 2.0 -5.1286307909848006e-05
	grad: 2.0 4.0 -0.00020104232700646207
	grad: 3.0 6.0 -0.0004161576169003922
	grad: 1.0 2.0 -3.7916582873442906e-05
	grad: 2.0 4.0 -0.0001486330048638962
	grad: 3.0 6.0 -0.0003076703200690645
	grad: 1.0 2.0 -2.8032184717474706e-05
	grad: 2.0 4.0 -0.0001098861640933535
	grad: 3.0 6.0 -0.00022746435967313516
	grad: 1.0 2.0 -2.0724530547688857e-05
	grad: 2.0 4.0 -8.124015974608767e-05
	grad: 3.0 6.0 -0.00016816713067413502
	grad: 1.0 2.0 -1.5321894128117464e-05
	grad: 2.0 4.0 -6.006182498197177e-05
	grad: 3.0 6.0 -0.00012432797771566584
	grad: 1.0 2.0 -1.1327660191629008e-05
	grad: 2.0 4.0 -4.4404427951505454e-05
	grad: 3.0 6.0 -9.191716585732479e-05
	grad: 1.0 2.0 -8.37467511161094e-06
	grad: 2.0 4.0 -3.282872643772805e-05
	grad: 3.0 6.0 -6.795546372551087e-05
	grad: 1.0 2.0 -6.191497806007362e-06
	grad: 2.0 4.0 -2.4270671399762023e-05
	grad: 3.0 6.0 -5.0240289795056015e-05
	grad: 1.0 2.0 -4.5774486259198e-06
	grad: 2.0 4.0 -1.794359861406747e-05
	grad: 3.0 6.0 -3.714324913239864e-05
	grad: 1.0 2.0 -3.3841626985164908e-06
	grad: 2.0 4.0 -1.326591777761621e-05
	grad: 3.0 6.0 -2.7460449796734565e-05
	grad: 1.0 2.0 -2.5019520926150562e-06
	grad: 2.0 4.0 -9.807652203264183e-06
	grad: 3.0 6.0 -2.0301840059744336e-05
	grad: 1.0 2.0 -1.8497232057157476e-06
	grad: 2.0 4.0 -7.250914967116273e-06
	grad: 3.0 6.0 -1.5009393983689279e-05
	grad: 1.0 2.0 -1.3675225627451937e-06
	grad: 2.0 4.0 -5.3606884460322135e-06
	grad: 3.0 6.0 -1.109662508014253e-05
	grad: 1.0 2.0 -1.0110258408246864e-06
	grad: 2.0 4.0 -3.963221296032771e-06
	grad: 3.0 6.0 -8.20386808086937e-06
	grad: 1.0 2.0 -7.474635363990956e-07
	grad: 2.0 4.0 -2.930057062755509e-06
	grad: 3.0 6.0 -6.065218119744031e-06
	grad: 1.0 2.0 -5.526087618612507e-07
	grad: 2.0 4.0 -2.166226346744793e-06
	grad: 3.0 6.0 -4.484088535150477e-06
	grad: 1.0 2.0 -4.08550288710785e-07
	grad: 2.0 4.0 -1.6015171322436572e-06
	grad: 3.0 6.0 -3.3151404608133817e-06
	grad: 1.0 2.0 -3.020461312175371e-07
	grad: 2.0 4.0 -1.1840208351543424e-06
	grad: 3.0 6.0 -2.4509231284497446e-06
	grad: 1.0 2.0 -2.2330632942768602e-07
	grad: 2.0 4.0 -8.753608113920563e-07
	grad: 3.0 6.0 -1.811996877876254e-06
	grad: 1.0 2.0 -1.6509304900935717e-07
	grad: 2.0 4.0 -6.471647520100987e-07
	grad: 3.0 6.0 -1.3396310407642886e-06
	grad: 1.0 2.0 -1.220552721115098e-07
	grad: 2.0 4.0 -4.784566662863199e-07
	grad: 3.0 6.0 -9.904052991061008e-07
	grad: 1.0 2.0 -9.023692726373156e-08
	grad: 2.0 4.0 -3.5372875473171916e-07
	grad: 3.0 6.0 -7.322185204827747e-07
	grad: 1.0 2.0 -6.671324292994996e-08
	grad: 2.0 4.0 -2.615159129248923e-07
	grad: 3.0 6.0 -5.413379398078177e-07
	grad: 1.0 2.0 -4.932190122985958e-08
	grad: 2.0 4.0 -1.9334185274999527e-07
	grad: 3.0 6.0 -4.002176350326181e-07
	grad: 1.0 2.0 -3.6464273378555845e-08
	grad: 2.0 4.0 -1.429399514307761e-07
	grad: 3.0 6.0 -2.9588569994132286e-07
	grad: 1.0 2.0 -2.6958475007887728e-08
	grad: 2.0 4.0 -1.0567722164012139e-07
	grad: 3.0 6.0 -2.1875184863517916e-07
	grad: 1.0 2.0 -1.993072418216002e-08
	grad: 2.0 4.0 -7.812843882959442e-08
	grad: 3.0 6.0 -1.617258700292723e-07
	grad: 1.0 2.0 -1.473502342363986e-08
	grad: 2.0 4.0 -5.7761292637792394e-08
	grad: 3.0 6.0 -1.195658771990793e-07
	grad: 1.0 2.0 -1.0893780100218464e-08
	grad: 2.0 4.0 -4.270361841918202e-08
	grad: 3.0 6.0 -8.839649012770678e-08
	grad: 1.0 2.0 -8.05390243385773e-09
	grad: 2.0 4.0 -3.1571296688071016e-08
	grad: 3.0 6.0 -6.53525820126788e-08
	grad: 1.0 2.0 -5.9543463493128e-09
	grad: 2.0 4.0 -2.334103754719763e-08
	grad: 3.0 6.0 -4.8315948575350376e-08
	grad: 1.0 2.0 -4.402119557767037e-09
	grad: 2.0 4.0 -1.725630838222969e-08
	grad: 3.0 6.0 -3.5720557178819945e-08
	grad: 1.0 2.0 -3.254539748809293e-09
	grad: 2.0 4.0 -1.2757796596929438e-08
	grad: 3.0 6.0 -2.6408640607655798e-08
	grad: 1.0 2.0 -2.406120636067044e-09
	grad: 2.0 4.0 -9.431992964437086e-09
	grad: 3.0 6.0 -1.9524227568012975e-08
	grad: 1.0 2.0 -1.7788739370416806e-09
	grad: 2.0 4.0 -6.97318647269185e-09
	grad: 3.0 6.0 -1.4434496264925656e-08
	grad: 1.0 2.0 -1.3151431055291596e-09
	grad: 2.0 4.0 -5.155360582875801e-09
	grad: 3.0 6.0 -1.067159693945996e-08
	grad: 1.0 2.0 -9.72300906454393e-10
	grad: 2.0 4.0 -3.811418736177075e-09
	grad: 3.0 6.0 -7.88963561149103e-09
	grad: 1.0 2.0 -7.18833437218791e-10
	grad: 2.0 4.0 -2.8178277489132597e-09
	grad: 3.0 6.0 -5.832902161273523e-09
	grad: 1.0 2.0 -5.314420015167798e-10
	grad: 2.0 4.0 -2.0832526814729135e-09
	grad: 3.0 6.0 -4.31233715403323e-09
	grad: 1.0 2.0 -3.92901711165905e-10
	grad: 2.0 4.0 -1.5401742103904326e-09
	grad: 3.0 6.0 -3.188159070077745e-09
	grad: 1.0 2.0 -2.9047697580608656e-10
	grad: 2.0 4.0 -1.1386696030513122e-09
	grad: 3.0 6.0 -2.3570478902001923e-09
	grad: 1.0 2.0 -2.1475310418850313e-10
	grad: 2.0 4.0 -8.418314934033333e-10
	grad: 3.0 6.0 -1.7425900722400911e-09
	grad: 1.0 2.0 -1.5876944203796484e-10
	grad: 2.0 4.0 -6.223768167501476e-10
	grad: 3.0 6.0 -1.2883241140571045e-09
	grad: 1.0 2.0 -1.17380327679939e-10
	grad: 2.0 4.0 -4.601314884666863e-10
	grad: 3.0 6.0 -9.524754318590567e-10
	grad: 1.0 2.0 -8.678080476443029e-11
	grad: 2.0 4.0 -3.4018121652934497e-10
	grad: 3.0 6.0 -7.041780492045291e-10
	grad: 1.0 2.0 -6.415845632545825e-11
	grad: 2.0 4.0 -2.5150193039280566e-10
	grad: 3.0 6.0 -5.206075570640678e-10
	grad: 1.0 2.0 -4.743316850408519e-11
	grad: 2.0 4.0 -1.8593837580738182e-10
	grad: 3.0 6.0 -3.8489211817704927e-10
	grad: 1.0 2.0 -3.5067948545020045e-11
	grad: 2.0 4.0 -1.3746692673066718e-10
	grad: 3.0 6.0 -2.845563784603655e-10
	grad: 1.0 2.0 -2.5926372160256506e-11
	grad: 2.0 4.0 -1.0163070385260653e-10
	grad: 3.0 6.0 -2.1037571684701106e-10
	grad: 1.0 2.0 -1.9167778475548403e-11
	grad: 2.0 4.0 -7.51381179497912e-11
	grad: 3.0 6.0 -1.5553425214420713e-10
	grad: 1.0 2.0 -1.4170886686315498e-11
	grad: 2.0 4.0 -5.555023108172463e-11
	grad: 3.0 6.0 -1.1499068364173581e-10
	grad: 1.0 2.0 -1.0476508549572827e-11
	grad: 2.0 4.0 -4.106759377009439e-11
	grad: 3.0 6.0 -8.500933290633839e-11
	grad: 1.0 2.0 -7.745359908994942e-12
	grad: 2.0 4.0 -3.036149109902908e-11
	grad: 3.0 6.0 -6.285105769165966e-11
	grad: 1.0 2.0 -5.726086271806707e-12
	grad: 2.0 4.0 -2.2446045022661565e-11
	grad: 3.0 6.0 -4.646416584819235e-11
	grad: 1.0 2.0 -4.233058348290797e-12
	grad: 2.0 4.0 -1.659294923683774e-11
	grad: 3.0 6.0 -3.4351188560322043e-11
	grad: 1.0 2.0 -3.1294966618133913e-12
	grad: 2.0 4.0 -1.226752033289813e-11
	grad: 3.0 6.0 -2.539835008974478e-11
	grad: 1.0 2.0 -2.3137047833188262e-12
	grad: 2.0 4.0 -9.070078021977679e-12
	grad: 3.0 6.0 -1.8779644506139448e-11
	grad: 1.0 2.0 -1.7106316363424412e-12
	grad: 2.0 4.0 -6.7057470687359455e-12
	grad: 3.0 6.0 -1.3882228699912957e-11
	grad: 1.0 2.0 -1.2647660696529783e-12
	grad: 2.0 4.0 -4.957811938766099e-12
	grad: 3.0 6.0 -1.0263789818054647e-11
	grad: 1.0 2.0 -9.352518759442319e-13
	grad: 2.0 4.0 -3.666400516522117e-12
	grad: 3.0 6.0 -7.58859641791787e-12
	grad: 1.0 2.0 -6.914468997365475e-13
	grad: 2.0 4.0 -2.7107205369247822e-12
	grad: 3.0 6.0 -5.611511255665391e-12
	grad: 1.0 2.0 -5.111466805374221e-13
	grad: 2.0 4.0 -2.0037305148434825e-12
	grad: 3.0 6.0 -4.1460168631601846e-12
	grad: 1.0 2.0 -3.779199175824033e-13
	grad: 2.0 4.0 -1.4814816040598089e-12
	grad: 3.0 6.0 -3.064215547965432e-12
	grad: 1.0 2.0 -2.793321129956894e-13
	grad: 2.0 4.0 -1.0942358130705543e-12
	grad: 3.0 6.0 -2.2648549702353193e-12
	grad: 1.0 2.0 -2.0650148258027912e-13
	grad: 2.0 4.0 -8.100187187665142e-13
	grad: 3.0 6.0 -1.6786572132332367e-12
Predict (after training) 4 7.9999999999996945

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值