模型的可解釋性
對loss.sum().backward()的理解:
對.sum()
的理解
import torch
x = torch.arange(4.0)
x.requires_grad_(true)
y = 2 * torch.dot(x, x)
y.backward()
x.grad
# 輸出: tensor([ 0., 4., 8., 12.])
x.grad.zero_()
y = x.sum()
y.backward()
x.grad
# 輸出: tensor([1., 1., 1., 1.])
x.grad.zero_()
y = x * x
# 等價於y.backward(torch.ones(len(x)))
y.sum().backward()
x.grad
#輸出: tensor([0., 2., 4., 6.])
##原始碼
class tensordataset(dataset):
each sample will be retrieved by indexing tensors along the first dimension.
arguments:
*tensors (tensor): tensors that h**e the same size of the first dimension.
"""'''資料集包裝張量。
每個樣本將通過沿第一維索引張量來檢索。
引數:*張量(張量):具有與第一維相同大小的張量。'''
def __init__(self, *tensors):
assert all(tensors[0].size(0) == tensor.size(0) for tensor in tensors)
self.tensors = tensors
def __getitem__(self, index):
return tuple(tensor[index] for tensor in self.tensors)
def __len__(self):
return self.tensors[0].size(0)
pytorch原始碼解讀之torch.utils.data.dataloader
上圖是梯度更新的公式,其中l是損失,如果說損失沒有沒有平均,那麼就需要再學習率上除以樣本大小,保證更新值保持在同一尺度。
梯度下降(一階導演算法) 牛頓法(二階導演算法、收斂速度更快)
2 線性回歸
線性回歸演算法是使用線性方程對資料集進行擬合的演算法,是乙個非常常見的回歸演算法 就是經典的最小二乘法問題 最小化誤差的平方 均方誤差mse 公式 是mse開個根號,其實實質是一樣的。只不過用於資料更好的描述。例如 要做房價 每平方是萬元,我們 結果也是萬元。那麼差值的平方單位應該是千萬級別的。那我...
回歸的線性模型(2)
其實越往後面越發現自己之前認識的片面性,但是對我這種記性不好的人來說還是要寫一點東西總結一下,以便之後翻查,審視自己當初的思路有沒有錯誤。不當之處還請各位及時批評。前文已經看到,採用最大似然方法對目標變數的分布進行點估計時,容易產生過擬合現象,通過引入分布引數的先驗概率來引入正則化項,來限制模型複雜...
2 非線性回歸
import keras import numpy as np import matplotlib.pyplot as plt sequential按順序構成的模型 from keras.models import sequential dense全連線層 from keras.layers imp...