生活随笔
收集整理的這篇文章主要介紹了
Pytorch(一) --线性模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最終還是要學Pytorch,Tensorflow也很好,不過對于做研究來講,還是有些許的不足,這算是Pytorch的一個入門吧。
針對y=w*x這樣一個線性模型,利用窮舉法去線性的模擬這個直線。雖然這一章并沒有真的用到Pytorch的具體內容,不過這算是深度學習的一個入門。
代碼如下:
import numpy
as np
import matplotlib
.pyplot
as plt
x_data
= [1.0,2.0,3.0]
y_data
= [2.0,4.0,6.0]def forward(x
):return x
*w
def loss(x
,y
):y_pred
= forward
(x
)return (y
-y_pred
)**2
w_list
= []
mse_list
= []
for w
in np
.arange
(0.0,4.1,0.1):print("w=",w
)l_sum
=0for x_val
,y_val
in zip(x_data
,y_data
):y_pred_val
= forward
(x_val
)loss_val
= loss
(x_val
,y_val
)l_sum
+=loss_val
print('\t',x_val
,y_val
,y_pred_val
,loss_val
)print('MSE=',l_sum
/3)w_list
.append
(w
)mse_list
.append
(l_sum
/3)
plt
.plot
(w_list
,mse_list
)
plt
.ylabel
('Loss')
plt
.xlabel
('w')
plt
.show
()
最終得到的結果如下:
在w=2的時候,Loss值達到最小。
課后作業:
針對y=w*x+b,同樣利用上述方法,得到一個近似的線性模型。
代碼如下(參考鏈接):
import numpy
as np
import matplotlib
.pyplot
as plt
from mpl_toolkits
.mplot3d
import Axes3D
x_data
= [1.0,2.0,3.0]
y_data
= [5.0,7.0,9.0]def forward(x
):return x
*w
+b
def loss(x
,y
):y_pred
= forward
(x
)return (y_pred
-y
)**2mse_list
= []
W
= np
.arange
(0.0,4.1,0.1)
B
= np
.arange
(0.0,4.1,0.1)
[w
,b
] = np
.meshgrid
(W
,B
)l_sum
= 0
for x_val
,y_val
in zip(x_data
,y_data
):loss_val
= loss
(x_val
,y_val
)l_sum
+=loss_valfig
= plt
.figure
()
ax
= Axes3D
(fig
)
ax
.plot_surface
(w
,b
,l_sum
/3)
plt
.show
()
對代碼有疑問的,可以查看一下np.meshgrid這個函數的用法。它的返回值是兩個矩陣,在本樣例中就是兩個41*41的矩陣。在后面的運算中也都是矩陣在運算.
最終結果如下所示:
努力加油a啊
總結
以上是生活随笔為你收集整理的Pytorch(一) --线性模型的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。