任務說明:建立三個資料點,用線性模型對資料進行擬合,模型引數(w, b)的確定採用窮舉法,計算損失函式mse,將每對(w,b)的mse顯示出來,最後繪製(w,b,mse)三維曲線圖,確定最優的線性模型。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
train_x = [1.0, 2.0, 3.0]
train_y = [2.0, 4.0, 6.0]
def predict(x):
return w * x + b
def loss(x, y):
pred_y = predict(x)
return (y - pred_y)*(y - pred_y)
w = np.arange(0, 4.1, 0.1)
b = np.arange(-0.5, 0.6, 0.1)
w_matrix, b_matrix = np.meshgrid(w, b)
mse_matrix = np.zeros([w_matrix.shape[0], w_matrix.shape[1]])
for i in range(w_matrix.shape[0]):
for j in range(w_matrix.shape[1]):
w, b = w_matrix[i][j], b_matrix[i][j]
print("w = b = ".format(w, b))
total_loss = 0.0
for x_val, y_val in zip(train_x, train_y):
y_pred = predict(x_val)
loss_n = loss(x_val, y_val)
print("\t", x_val, y_val, y_pred, loss_n)
total_loss += loss_n
print("mse = {}".format(total_loss / 3))
print("----------------------------")
mse_matrix[i][j] = total_loss / 3
print(np.where(mse_matrix==np.min(mse_matrix))) #找到mse最小值的索引
# print(mse_matrix[5][20])
# print(w_matrix[5][20])
# print(b_matrix[5][20])
#繪製三維圖
fig = plt.figure()
ax = fig.gca(projection='3d')
plt.xlabel('w')
plt.ylabel('b')
ax.plot_su***ce(w_matrix, b_matrix, mse_matrix,rstride=1, cstride=1, cmap=cm.coolwarm,linewidth=0, antialiased=false)
plt.show()
前面mse的計算沒有特別說明的,注意使用plot_su***ce繪製三維圖時,要求mse必須是二維資料,開始的思路是先用列表儲存w,b和mse的值,再使用meshgrid()建立w和b,最後將mse轉換為二維資料,但是這個過程中由於w和b是由生成的列表轉化而來,不僅矩陣很大,而且資料的排列順序發生變化,導致mse矩陣的生成比較麻煩(這裡應該有好方法),因此想到先將w和b也轉化為二維,採用meshgrid()函式,直接用其中的值計算mse矩陣。(這裡處理的比較笨,但還是能夠完成任務的。)
w = np.arange(0, 4.1, 0.1)
b = np.arange(-0.5, 0.6, 0.1)
w_matrix, b_matrix = np.meshgrid(w, b)
mse_matrix = np.zeros([w_matrix.shape[0], w_matrix.shape[1]])
最終繪製出的三維圖效果:
PyTorch深度學習實踐 Overview
pytorch是乙個基於torch的python開源機器學習庫,用於自然語言處理等應用程式。它主要由facebookd的人工智慧小組開發,不僅能夠 實現強大的gpu加速,同時還支援動態神經網路。pytorch是乙個動態的框架,而tensorflow是靜態框架 2.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 defloss x,y y pred forward x return ...
Pytorch深度學習實踐 線性模型
在看劉二大人的pytorch教程,寫個筆記記錄一下,如果有什麼問題歡迎一起 呀 傳送門 劉二大人的pytorch深度學習實踐 線性模型 首先是線性模型的定義 給定由d個屬性描述對的示例x x x x 其中 是第i個屬性上的取值,線性模型試圖學得乙個通過屬性的線性組合來進行 的函式,即 轉換成向量形式...