刘二大人PyTorch深度学习实践-day02

PyTorch 深度学习实践

02.Linear Model

刘二大人视频学习笔记,2023年07月06日。

本章是对线性模型的介绍,做一些重要内容的记录,共勉。

(🥺我在电脑用Typora写,最终要存在CSDN上,所以截图很麻烦,尽量以文字形式记录)


0.前言

深度学习等需要经过的三个步骤:

1.数据集

2.模型的选择(神经网络,决策树,朴素贝叶斯……)

3.训练

4.(三个步骤有四个很正常吧)推理

面临的问题:

在这里插入图片描述

给定数据都属于Training的数据,未知的属于Test的数据。机器学习就是,拿到数据集进行训练,然后对未知的输入得出对应的结果。对于知道x和y的值的学习称为监督学习。

一般把数据集分为两部分,训练集(x,y)和测试集(x)。

过拟合:数据过多,甚至把噪声都学习进来,这样我们就需要要求需要泛化的特性,即对未知图像也可以得出正确结果。

1.模型设计

对于上面的问题,我们需要找到合适的模型,即需要找到
y = f ( x ) y = f(x) y=f(x)
对于f(x)来说,他的形式是多样的,即模型是多样的。首先最简单的就是线性模型,也即
y ^ = ω ∗ x + b \widehat{y} = \omega * x + b y =ωx+b
首先可以简化一下模型,为
y ^ = ω ∗ x \widehat{y} = \omega * x y =ωx

2.计算损失

在这里插入图片描述

里肉眼可见 ω = 2 \omega = 2 ω=2,但是具体过程是随机取值,用所取值与实际值杜比,所以需要一个方式Evaluate Model Error(评估模型误差)

在机器学习里,叫这个评估模型为Loss(损失),简单的方法是:
l o s s = ( y ^ − y ) 2 = ( x ∗ ω − y ) 2 loss = (\widehat{y} - y)^2 = (x*\omega -y)^2 loss=(y y)2=(xωy)2

x(Hours)y(Points)y_predict(w=3)Loss(w=3)
1231
2464
3699
mean = 14/3

所以目标就是找到一个 ω \omega ω值使得Loss的mean值最低。

3.Loss Function & Cost Function

  • Trainning Loss(Error)

l o s s = ( y ^ − y ) 2 = ( x ∗ ω − y ) 2 loss = (\widehat{y}-y)^2=(x*\omega-y)^2 loss=(y y)2=(xωy)2

  • Mean Square Error(MSE)

c o s t = 1 N ∑ n = 1 N ( y ^ n − y n ) 2 cost = \frac{1}{N}\sum_{n=1}^{N}(\widehat{y}_n - y_n)^2 cost=N1n=1N(y nyn)2

穷举法:计算 ω \omega ω取不同值时的Loss和MSE值,得到Loss- ω \omega ω曲线。

4.怎样画图?

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 = []
for w in np.arange(0.0,4.1,0.1):
    print('w = ',w)
    l_sum = 0;
    for x_val,y_val in zip(x_data,y_data):
        y_prd_val = forward(x_val)
        loss_val = loss(x_val,y_val)
        l_sum += loss_val
        print('\t',x_val,y_val,y_prd_val,loss_val)
    print('MSE = ',l_sum/3)
    w_list.append(w)
    mse_list.append(l_sum/3)

plt.plot(w_list,mse_list)
plt.ylabel('Loss')
plt.xlabel('w')
plt.show()

在这里插入图片描述

  • visdom一个web端的实时绘图工具。

5.作业

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 假设b = 7,w = 2
x_data = [1.0,2.0,3.0]
y_data = [9.0,11.0,13.0]

def forward(x):
    return x * w + b;

def loss(x,y):
    y_pred = forward(x)
    return (y_pred - y)*(y_pred - y)

w_list = []
mse_list = []

W=np.arange(0.0,4.1,0.1)
B=np.arange(5.0,9.1,0.1)
[w,b]=np.meshgrid(W,B)

l_sum = 0
for x_val,y_val in zip(x_data,y_data):
    y_prd_val = forward(x_val)
    loss_val = loss(x_val,y_val)
    l_sum += loss_val
    print('\t',x_val,y_val,y_prd_val,loss_val)
    print('MSE = ',l_sum/3)
    w_list.append(w)
    mse_list.append(l_sum/3)

fig = plt.figure()
ax = Axes3D(fig)
ax = fig.add_axes(Axes3D(fig))
ax.plot_surface(w, b, l_sum/3)
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值