
資料內(nèi)容:
在訓練了預(yù)先確定的若?迭代次數(shù)后(或者直到滿?某些其他停?條件后),我們記錄下模型參數(shù)的估計值, 
表?為
ˆ
w
, ˆ
b。但是,即使我們的函數(shù)確實是線性的且?噪聲,這些估計值也不會使損失函數(shù)真正地達到最? 
值。因為算法會使得損失向最?值緩慢收斂,但卻不能在有限的步數(shù)內(nèi)?常精確地達到最?值。 
線性回歸恰好是?個在整個域中只有?個最?值的學習問題。但是對像深度神經(jīng)?絡(luò)這樣復(fù)雜的模型來說, 
損失平?上通常包含多個最?值。深度學習實踐者很少會去花費???尋找這樣?組參數(shù),使得在訓練集上 
的損失達到最?。事實上,更難做到的是找到?組參數(shù),這組參數(shù)能夠在我們從未?過的數(shù)據(jù)上實現(xiàn)較低的 
損失,這?挑戰(zhàn)被稱為泛化(generalization)。 
?模型進?預(yù)測 
給定“已學習”的線性回歸模型
ˆ
w
?x + ˆ
b,現(xiàn)在我們可以通過房屋?積x1和房齡x2來估計?個(未包含在訓 
練數(shù)據(jù)中的)新房屋價格。給定特征估計?標的過程通常稱為預(yù)測(prediction)或推斷(inference)。 
本書將嘗試堅持使?預(yù)測這個詞。雖然推斷這個詞已經(jīng)成為深度學習的標準術(shù)語,但其實推斷這個詞有些? 
詞不當。在統(tǒng)計學中,推斷更多地表?基于數(shù)據(jù)集估計參數(shù)。當深度學習從業(yè)者與統(tǒng)計學家交談時,術(shù)語的 
誤?經(jīng)常導(dǎo)致?些誤解。 
3.1.2 ?量化加速 
在訓練我們的模型時,我們經(jīng)常希望能夠同時處理整個?批量的樣本。為了實現(xiàn)這?點,需要我們對計算進 
??量化,從?利?線性代數(shù)庫,?不是在Python中編寫開銷?昂的for循環(huán)。 
%matplotlib inline 
import math 
import time 
import numpy as np 
import torch 
from d2l import torch as d2l 
為了說明?量化為什么如此重要,我們考慮對向量相加的兩種?法。我們實例化兩個全為1的10000維向量。 
在?種?法中,我們將使?Python的for循環(huán)遍歷向量;在另?種?法中,我們將依賴對+的調(diào)?。 
n = 10000 
a = torch.ones([n]) 
b = torch.ones([n]) 
3.1. 線性回歸 
89由于在本書中我們將頻繁地進?運?時間的基準測試,所以我們定義?個計時器: 
class Timer: 
#@save 
"""記錄多次運?時間""" 
def __init__(self): 
self.times = [] 
self.start() 
def start(self): 
"""啟動計時器""" 
self.tik = time.time() 
def stop(self): 
"""停?計時器并將時間記錄在列表中""" 
self.times.append(time.time() - self.tik) 
return self.times[-1] 
def avg(self): 
"""返回平均時間""" 
return sum(self.times) / len(self.times) 
def sum(self): 
"""返回時間總和""" 
return sum(self.times) 
def cumsum(self): 
"""返回累計時間""" 
return np.array(self.times).cumsum().tolist()