動手學深度學習 task01

2021-10-02 20:08:42 字數 2520 閱讀 7933

task-1:

線性回歸、多層感知機、softmax函式

(1)線性回歸作為基本的機器學習演算法,實現較簡單,應用廣泛。

以下為用pytorch編寫的線性回歸類

import torch.nn as nn

import torch

from torch.autograd import variable

from torch import optim

from torch.utils import data

import random

class

linear_regression

(nn.module)

:def

__init__

(self,x,y,batch_size=

10,batch=

false

,iter_number=

1000

,lr=

0.001

,bias=

true):

super

(linear_regression, self)

.__init__(

) self.x=x

self.y=y

self.iter_number=iter_number

self.lr=lr

self.bias=bias

self.batch_size=batch_size#進行批量梯度下降

self.batch=batch

defcompute

(self,w,x)

:#進行**

predict=w*x

return predict

defloss

(self,y,y_p)

: loss=

((y-y_p)**2

).sum(

)return loss

defsgd(self,w,x,y,lr)

: index=random.randint(

0,x.size(0)

-1) rand_x=x[index]

rand_y=y[index]

w.data=w.data+lr*

(rand_y-w*rand_x)

*rand_x

return w

deflinear

(x,y,batch_size=

10,batch=

false

,iter_number=

10000

,lr=

0.001

,bias=

true):

if bias:

# 生成權重(可設定是否新增偏差)

weight=variable(torch.rand(size=(1

,x.size(1)

)),requires_grad=

true

)else

: weight=variable(torch.rand(size=(1

,x.size(1)

)),requires_grad=

true

) model=linear_regression(x=x,y=y,batch_size=batch_size,batch=batch,lr=lr,bias=bias)

dataset = data.tensordataset(x, y)

dataset = data.dataloader(dataset, batch_size=batch_size, shuffle=

true

)for i in

range

(iter_number)

:# 迭代多少次

y_predict = model.compute(weight, x)

# 計算**值

loss = model.loss(y, y_predict)

# 計算損失函式

loss.backward(

) weight=model.sgd(weight,x,y,lr)

print

('第{}次迭代已完成,損失誤差為{}'

.format

(i+1

,loss)

)

執行輸出結果為:

第9117次迭代已完成,損失誤差為697.6427001953125

第9118次迭代已完成,損失誤差為697.6484375

第9119次迭代已完成,損失誤差為697.6598510742188

第9120次迭代已完成,損失誤差為697.6563720703125

(2)多層感知機

感知機的原理只是以設定乙個超平面來進行劃分,使誤分類的樣本個數最小,但其損失函式並不是以最小誤分類數來設定的,而是求解樣本的誤分類點離超平面的距離,令其距離最小,從而實現樣本的劃分。感知機的原理在支援向量機的部分會得到進一步的優化。

機器學習Task01

x,y 輸入資料,array like,shape n,s 點的大小 標量或array like,shape n,可選 大小以點數 2。預設是rcparams lines.markersize 2。c 點的顏色 順序或顏色順序,可選,預設 b c可以是單個顏色格式的字串,也可以是一系列顏色 規範的長...

動手學深度學習Task3

過擬合 欠擬合及其解決方案 梯度消失 梯度 迴圈神經網路高階 1 過擬合和欠擬合 過擬合 模型的訓練誤差遠小於它在測試資料集上的誤差,我們稱該現象為過擬合 欠擬合 模型訓練誤差無法降低.如何應對欠擬合和過擬合?在這裡我們重點討論兩個因素 模型複雜度和訓練資料集大小。1.1.1 模型複雜度 為了解釋模...

動手學深度學習Task7

一 優化演算法高階 二 word2vec 三 詞嵌入高階 一 優化演算法高階 在 section 11.4 中,我們提到,目標函式有關自變數的梯度代表了目標函式在自變數當前位置下降最快的方向。因此,梯度下降也叫作最陡下降 steepest descent 在每次迭代中,梯度下降根據自變數當前位置,沿...