PyTorch深度學習實踐第二講 線性模型

2021-10-14 05:53:05 字數 2125 閱讀 5818

任務說明:建立三個資料點,用線性模型對資料進行擬合,模型引數(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個屬性上的取值,線性模型試圖學得乙個通過屬性的線性組合來進行 的函式,即 轉換成向量形式...