【PyTorch基礎教程1】線性模型(學不會來打我啊)

      網友投稿 804 2025-04-02

      文章目錄


      一、線性模型

      二、繪圖工具

      三、作業

      Reference

      一、線性模型

      不要小看簡單線性模型哈哈,雖然這講我們還沒正式用到pytorch,但是用到的前向傳播、損失函數、兩種繪loss圖等方法在后面是很常用的。

      對下面的代碼說明:

      zip函數可以將x_data和y_data組合元組列表,在for循環中每次遍歷就是對于列表中的每個元組。

      函數forward()中,有一個變量w。這個變量最終的值是從for循環中傳入的。

      # -*- coding: utf-8 -*- """ Created on Tue Oct 12 14:30:13 2021 @author: 86493 """ 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_pred - y) * (y_pred - y) # 保存權重 w_list = [] # 保存權重的損失函數值 mse_list = [] # 窮舉w值對應的損失函數MSE for w in np.arange(0.0, 4.1, 0.1): print('w = ', w) loss_sum = 0 for x_val, y_val in zip(x_data, y_data): # 為了打印y預測值,其實loss里也計算了 y_pred_val = forward(x_val) loss_val = loss(x_val, y_val) loss_sum += loss_val print('\t', x_val, y_val, y_pred_val, loss_val) print('MSE = ', loss_sum / 3) print('='*60) w_list.append(w) mse_list.append(loss_sum / 3) # 繪loss變化圖,橫坐標是w,縱坐標是loss plt.plot(w_list, mse_list) plt.ylabel('Loss') plt.xlabel('w') plt.show()

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      剛才對應的打印結果為:

      w = 0.0 1.0 2.0 0.0 4.0 2.0 4.0 0.0 16.0 3.0 6.0 0.0 36.0 MSE = 18.666666666666668 ============================================================ w = 0.1 1.0 2.0 0.1 3.61 2.0 4.0 0.2 14.44 3.0 6.0 0.30000000000000004 32.49 MSE = 16.846666666666668 ============================================================ w = 0.2 1.0 2.0 0.2 3.24 2.0 4.0 0.4 12.96 3.0 6.0 0.6000000000000001 29.160000000000004 MSE = 15.120000000000003 ============================================================ w = 0.30000000000000004 1.0 2.0 0.30000000000000004 2.8899999999999997 2.0 4.0 0.6000000000000001 11.559999999999999 3.0 6.0 0.9000000000000001 26.009999999999998 MSE = 13.486666666666665 ============================================================ w = 0.4 1.0 2.0 0.4 2.5600000000000005 2.0 4.0 0.8 10.240000000000002 3.0 6.0 1.2000000000000002 23.04 MSE = 11.946666666666667 ============================================================ w = 0.5 1.0 2.0 0.5 2.25 2.0 4.0 1.0 9.0 3.0 6.0 1.5 20.25 MSE = 10.5 ============================================================ w = 0.6000000000000001 1.0 2.0 0.6000000000000001 1.9599999999999997 2.0 4.0 1.2000000000000002 7.839999999999999 3.0 6.0 1.8000000000000003 17.639999999999993 MSE = 9.146666666666663 ============================================================ w = 0.7000000000000001 1.0 2.0 0.7000000000000001 1.6899999999999995 2.0 4.0 1.4000000000000001 6.759999999999998 3.0 6.0 2.1 15.209999999999999 MSE = 7.886666666666666 ============================================================ w = 0.8 1.0 2.0 0.8 1.44 2.0 4.0 1.6 5.76 3.0 6.0 2.4000000000000004 12.959999999999997 MSE = 6.719999999999999 ============================================================ w = 0.9 1.0 2.0 0.9 1.2100000000000002 2.0 4.0 1.8 4.840000000000001 3.0 6.0 2.7 10.889999999999999 MSE = 5.646666666666666 ============================================================ w = 1.0 1.0 2.0 1.0 1.0 2.0 4.0 2.0 4.0 3.0 6.0 3.0 9.0 MSE = 4.666666666666667 ============================================================ w = 1.1 1.0 2.0 1.1 0.8099999999999998 2.0 4.0 2.2 3.2399999999999993 3.0 6.0 3.3000000000000003 7.289999999999998 MSE = 3.779999999999999 ============================================================ w = 1.2000000000000002 1.0 2.0 1.2000000000000002 0.6399999999999997 2.0 4.0 2.4000000000000004 2.5599999999999987 3.0 6.0 3.6000000000000005 5.759999999999997 MSE = 2.986666666666665 ============================================================ w = 1.3 1.0 2.0 1.3 0.48999999999999994 2.0 4.0 2.6 1.9599999999999997 3.0 6.0 3.9000000000000004 4.409999999999998 MSE = 2.2866666666666657 ============================================================ w = 1.4000000000000001 1.0 2.0 1.4000000000000001 0.3599999999999998 2.0 4.0 2.8000000000000003 1.4399999999999993 3.0 6.0 4.2 3.2399999999999993 MSE = 1.6799999999999995 ============================================================ w = 1.5 1.0 2.0 1.5 0.25 2.0 4.0 3.0 1.0 3.0 6.0 4.5 2.25 MSE = 1.1666666666666667 ============================================================ w = 1.6 1.0 2.0 1.6 0.15999999999999992 2.0 4.0 3.2 0.6399999999999997 3.0 6.0 4.800000000000001 1.4399999999999984 MSE = 0.746666666666666 ============================================================ w = 1.7000000000000002 1.0 2.0 1.7000000000000002 0.0899999999999999 2.0 4.0 3.4000000000000004 0.3599999999999996 3.0 6.0 5.1000000000000005 0.809999999999999 MSE = 0.4199999999999995 ============================================================ w = 1.8 1.0 2.0 1.8 0.03999999999999998 2.0 4.0 3.6 0.15999999999999992 3.0 6.0 5.4 0.3599999999999996 MSE = 0.1866666666666665 ============================================================ w = 1.9000000000000001 1.0 2.0 1.9000000000000001 0.009999999999999974 2.0 4.0 3.8000000000000003 0.0399999999999999 3.0 6.0 5.7 0.0899999999999999 MSE = 0.046666666666666586 ============================================================ w = 2.0 1.0 2.0 2.0 0.0 2.0 4.0 4.0 0.0 3.0 6.0 6.0 0.0 MSE = 0.0 ============================================================ w = 2.1 1.0 2.0 2.1 0.010000000000000018 2.0 4.0 4.2 0.04000000000000007 3.0 6.0 6.300000000000001 0.09000000000000043 MSE = 0.046666666666666835 ============================================================ w = 2.2 1.0 2.0 2.2 0.04000000000000007 2.0 4.0 4.4 0.16000000000000028 3.0 6.0 6.6000000000000005 0.36000000000000065 MSE = 0.18666666666666698 ============================================================ w = 2.3000000000000003 1.0 2.0 2.3000000000000003 0.09000000000000016 2.0 4.0 4.6000000000000005 0.36000000000000065 3.0 6.0 6.9 0.8100000000000006 MSE = 0.42000000000000054 ============================================================ w = 2.4000000000000004 1.0 2.0 2.4000000000000004 0.16000000000000028 2.0 4.0 4.800000000000001 0.6400000000000011 3.0 6.0 7.200000000000001 1.4400000000000026 MSE = 0.7466666666666679 ============================================================ w = 2.5 1.0 2.0 2.5 0.25 2.0 4.0 5.0 1.0 3.0 6.0 7.5 2.25 MSE = 1.1666666666666667 ============================================================ w = 2.6 1.0 2.0 2.6 0.3600000000000001 2.0 4.0 5.2 1.4400000000000004 3.0 6.0 7.800000000000001 3.2400000000000024 MSE = 1.6800000000000008 ============================================================ w = 2.7 1.0 2.0 2.7 0.49000000000000027 2.0 4.0 5.4 1.960000000000001 3.0 6.0 8.100000000000001 4.410000000000006 MSE = 2.2866666666666693 ============================================================ w = 2.8000000000000003 1.0 2.0 2.8000000000000003 0.6400000000000005 2.0 4.0 5.6000000000000005 2.560000000000002 3.0 6.0 8.4 5.760000000000002 MSE = 2.986666666666668 ============================================================ w = 2.9000000000000004 1.0 2.0 2.9000000000000004 0.8100000000000006 2.0 4.0 5.800000000000001 3.2400000000000024 3.0 6.0 8.700000000000001 7.290000000000005 MSE = 3.780000000000003 ============================================================ w = 3.0 1.0 2.0 3.0 1.0 2.0 4.0 6.0 4.0 3.0 6.0 9.0 9.0 MSE = 4.666666666666667 ============================================================ w = 3.1 1.0 2.0 3.1 1.2100000000000002 2.0 4.0 6.2 4.840000000000001 3.0 6.0 9.3 10.890000000000004 MSE = 5.646666666666668 ============================================================ w = 3.2 1.0 2.0 3.2 1.4400000000000004 2.0 4.0 6.4 5.760000000000002 3.0 6.0 9.600000000000001 12.96000000000001 MSE = 6.720000000000003 ============================================================ w = 3.3000000000000003 1.0 2.0 3.3000000000000003 1.6900000000000006 2.0 4.0 6.6000000000000005 6.7600000000000025 3.0 6.0 9.9 15.210000000000003 MSE = 7.886666666666668 ============================================================ w = 3.4000000000000004 1.0 2.0 3.4000000000000004 1.960000000000001 2.0 4.0 6.800000000000001 7.840000000000004 3.0 6.0 10.200000000000001 17.640000000000008 MSE = 9.14666666666667 ============================================================ w = 3.5 1.0 2.0 3.5 2.25 2.0 4.0 7.0 9.0 3.0 6.0 10.5 20.25 MSE = 10.5 ============================================================ w = 3.6 1.0 2.0 3.6 2.5600000000000005 2.0 4.0 7.2 10.240000000000002 3.0 6.0 10.8 23.040000000000006 MSE = 11.94666666666667 ============================================================ w = 3.7 1.0 2.0 3.7 2.8900000000000006 2.0 4.0 7.4 11.560000000000002 3.0 6.0 11.100000000000001 26.010000000000016 MSE = 13.486666666666673 ============================================================ w = 3.8000000000000003 1.0 2.0 3.8000000000000003 3.240000000000001 2.0 4.0 7.6000000000000005 12.960000000000004 3.0 6.0 11.4 29.160000000000004 MSE = 15.120000000000005 ============================================================ w = 3.9000000000000004 1.0 2.0 3.9000000000000004 3.610000000000001 2.0 4.0 7.800000000000001 14.440000000000005 3.0 6.0 11.700000000000001 32.49000000000001 MSE = 16.84666666666667 ============================================================ w = 4.0 1.0 2.0 4.0 4.0 2.0 4.0 8.0 16.0 3.0 6.0 12.0 36.0 MSE = 18.666666666666668 ============================================================

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      【PyTorch基礎教程1】線性模型(學不會來打我啊)

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      76

      77

      78

      79

      80

      81

      82

      83

      84

      85

      86

      87

      88

      89

      90

      91

      92

      93

      94

      95

      96

      97

      98

      99

      100

      101

      102

      103

      104

      105

      106

      107

      108

      109

      110

      111

      112

      113

      114

      115

      116

      117

      118

      119

      120

      121

      122

      123

      124

      125

      126

      127

      128

      129

      130

      131

      132

      133

      134

      135

      136

      137

      138

      139

      140

      141

      142

      143

      144

      145

      146

      147

      148

      149

      150

      151

      152

      153

      154

      155

      156

      157

      158

      159

      160

      161

      162

      163

      164

      165

      166

      167

      168

      169

      170

      171

      172

      173

      174

      175

      176

      177

      178

      179

      180

      181

      182

      183

      184

      185

      186

      187

      188

      189

      190

      191

      192

      193

      194

      195

      196

      197

      198

      199

      200

      201

      202

      203

      204

      205

      206

      207

      208

      209

      210

      211

      212

      213

      214

      215

      216

      217

      218

      219

      220

      221

      222

      223

      224

      225

      226

      227

      228

      229

      230

      231

      232

      233

      234

      235

      236

      237

      238

      239

      240

      241

      242

      243

      244

      245

      246

      二、繪圖工具

      在深度學習中,我們一般沒有打印上面這種loss圖(

      一般橫坐標為epoch,而上面這種圖可以用于檢測最優超參數是多少

      ),下圖這里loss雖然隨著epoch增大而減少,但是在開發集上的效果卻可能是先減小后增大的,所以應該找中間這個畫豎線的點。

      PS:可以學習模型訓練可視化visdom工具,訓練還要注意存盤的問題(如防止要訓練7天,但在第6天報錯了)。

      畫圖除了用matplotlib.pyplot,還經常使用pandas的dataframe.plot,如下:

      # 增加loss折線圖 import pandas as pd df = pd.DataFrame(columns = ["Loss"]) # columns列名 df.index.name = "Epoch" for epoch in range(1, 201): loss = train() #df.loc[epoch] = loss.item() df.loc[epoch] = loss.item() df.plot()

      1

      2

      3

      4

      5

      6

      7

      8

      9

      上面這種loss圖也是最典型的.

      三、作業

      實現線性模型( y = w x + b y=wx+b y=wx+b)并輸出loss的3D圖像。

      # -*- coding: utf-8 -*- """ Created on Tue Oct 12 17:04:46 2021 @author: 86493 """ import numpy as np import matplotlib.pyplot as plt; from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm x_data = [1.0, 2.0, 3.0] y_data = [2.0, 4.0, 6.0] # 線性模型,多了個b def forward(x,w,b): return x * w + b # 損失函數,此處沒變 def loss(x, y, w, b): y_pred = forward(x, w, b) return (y_pred - y) * (y_pred - y) # 單獨寫出mse函數,為了計算不同w和b情況下對應的mse def mse(w,b): l_sum = 0 for x_val, y_val in zip(x_data, y_data): y_pred_val = forward(x_val,w,b) loss_val = loss(x_val, y_val,w,b) l_sum += loss_val print('\t', x_val, y_val, y_pred_val, loss_val) print('MSE=', l_sum / 3) return l_sum/3 #迭代取值,計算每個w取值下的x,y,y_pred,loss_val mse_list = [] # 畫圖 # 1.定義網格化數據 b_list=np.arange(-30,30,0.1) w_list=np.arange(-30,30,0.1); # 2.生成網格化數據 xx, yy = np.meshgrid(b_list, w_list, sparse=False, indexing='xy') # 3.每個點的對應高度 zz=mse(xx,yy) fig = plt.figure() ax = Axes3D(fig) ax.plot_surface(xx, yy, zz, rstride=1, # rows stride 指定行的跨度為1,只能是int cstride=1, # columns stride 指定列的跨度為1 cmap=cm.viridis) # 設置曲面的顏色 plt.show()

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      Reference

      [1] 3D圖繪制:https://matplotlib.org/stable/tutorials/toolkits/mplot3d.html

      [2] https://numpy.org/doc/stable/reference/generated/numpy.meshgrid.html#numpy.meshgrid

      [3] Matplotlib3D作圖-plot_surface(), .contourf(), plt.colorbar()

      [4]【matplotlib】如何進行顏色設置選擇cmap

      [5] https://blog.csdn.net/Pin_BOY/article/details/119707358

      [6] http://biranda.top/archives/page/2/

      pytorch 機器學習

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:刪除的文檔怎么找回(刪除的文檔怎么找回哪里?)
      下一篇:項目和平臺協同運營的關系(項目和運營的聯系)
      相關文章
      亚洲午夜无码久久久久| 33333在线亚洲| 久久亚洲中文无码咪咪爱| 亚洲一欧洲中文字幕在线| 亚洲视频日韩视频| 亚洲精品免费视频| 在线aⅴ亚洲中文字幕| 亚洲日产2021三区在线| 亚洲国产高清在线精品一区| 亚洲狠狠久久综合一区77777| 亚洲AV乱码一区二区三区林ゆな| 国产成人精品日本亚洲网站| 亚洲色自偷自拍另类小说| 亚洲精品中文字幕乱码三区| 久久亚洲av无码精品浪潮| 国产亚洲一区二区三区在线不卡| 日日噜噜噜噜夜夜爽亚洲精品 | 内射少妇36P亚洲区| 4480yy私人影院亚洲| 亚洲综合无码一区二区三区| 亚洲性色高清完整版在线观看| 亚洲国产高清美女在线观看| 中文字幕亚洲综合小综合在线| 亚洲日本久久一区二区va| 亚洲AV无码精品蜜桃| 久久亚洲精品国产精品婷婷| 亚洲日本在线电影| 天天综合亚洲色在线精品| 亚洲不卡AV影片在线播放| 国产精品亚洲综合专区片高清久久久| 在线亚洲精品自拍| 亚洲一级特黄无码片| 久久精品国产亚洲沈樵| 亚洲av无码乱码国产精品fc2| 亚洲免费在线播放| 亚洲精品欧洲精品| 日韩亚洲不卡在线视频中文字幕在线观看| 亚洲综合精品成人| 国产AV无码专区亚洲AV蜜芽| yy6080亚洲一级理论| 亚洲线精品一区二区三区|