您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何理解Python中的pyTorch權重衰減與L2范數正則化”,在日常操作中,相信很多人在如何理解Python中的pyTorch權重衰減與L2范數正則化問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何理解Python中的pyTorch權重衰減與L2范數正則化”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
下面進行一個高維線性實驗
假設我們的真實方程是:
假設feature數200,訓練樣本和測試樣本各20個
num_train,num_test = 10,10 num_features = 200 true_w = torch.ones((num_features,1),dtype=torch.float32) * 0.01 true_b = torch.tensor(0.5) samples = torch.normal(0,1,(num_train+num_test,num_features)) noise = torch.normal(0,0.01,(num_train+num_test,1)) labels = samples.matmul(true_w) + true_b + noise train_samples, train_labels= samples[:num_train],labels[:num_train] test_samples, test_labels = samples[num_train:],labels[num_train:]
def loss_function(predict,label,w,lambd): loss = (predict - label) ** 2 loss = loss.mean() + lambd * (w**2).mean() return loss
def semilogy(x_val,y_val,x_label,y_label,x2_val,y2_val,legend): plt.figure(figsize=(3,3)) plt.xlabel(x_label) plt.ylabel(y_label) plt.semilogy(x_val,y_val) if x2_val and y2_val: plt.semilogy(x2_val,y2_val) plt.legend(legend) plt.show()
def fit_and_plot(train_samples,train_labels,test_samples,test_labels,num_epoch,lambd): w = torch.normal(0,1,(train_samples.shape[-1],1),requires_grad=True) b = torch.tensor(0.,requires_grad=True) optimizer = torch.optim.Adam([w,b],lr=0.05) train_loss = [] test_loss = [] for epoch in range(num_epoch): predict = train_samples.matmul(w) + b epoch_train_loss = loss_function(predict,train_labels,w,lambd) optimizer.zero_grad() epoch_train_loss.backward() optimizer.step() test_predict = test_sapmles.matmul(w) + b epoch_test_loss = loss_function(test_predict,test_labels,w,lambd) train_loss.append(epoch_train_loss.item()) test_loss.append(epoch_test_loss.item()) semilogy(range(1,num_epoch+1),train_loss,'epoch','loss',range(1,num_epoch+1),test_loss,['train','test'])
可以發現加了正則項的模型,在測試集上的loss確實下降了
到此,關于“如何理解Python中的pyTorch權重衰減與L2范數正則化”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。