PyTorch深度学习实践第二讲线性模型

监督学习四步骤

  1. DataSet(数据集)
  2. Model(模型选择和设计,例如神经网络,决策树等)
  3. Training(大部分模型都需要训练,都有些例如KNN不需要训练)
  4. Inferring(推导使用)

线性模型

假设一个学生每周花费x小时在学习上,那么他可能会在最终测验上取得y分。

xy
12
24
36
4?

模型绘制
进行猜测之后可能为

  • y ^ = x ∗ w + b \hat{y}=x * w + b y^=xw+b
  • y ^ = a ∗ x 2 + b ∗ x + c \hat{y}=a * x ^ 2 + b * x + c y^=ax2+bx+c
  • y ^ = a ∗ e b x + c \hat{y}=a * e ^ {bx} + c y^=aebx+c

经过观测后为 y ^ = x ∗ w + b \hat{y}=x * w + b y^=xw+b,简化后为 y ^ = x ∗ w \hat{y}=x * w y^=xw
我们不知道权重w是多少扫,因此需要对结果做出评估:

Train Loss (Error)
l o s s = ( y ^ − y ) 2 = ( x ∗ w − y ) 2 loss=(\hat{y} - y) ^ 2 = (x * w - y)^2 loss=(y^y)2=(xwy)2

评估模型被称之为Loss损失。
目标是找到权重w使得每个点的平均损失最小,因此:

针对样本Train Loss (Error) l o s s = ( y ^ − y ) 2 = ( x ∗ w − y ) 2 loss=(\hat{y} - y) ^ 2 = (x * w - y)^2 loss=(y^y)2=(xwy)2
针对Training SetMean Square Error => MSE c o s t = 1 N ∑ n = 1 N ( y n ^ − y n ) 2 cost=\frac{1}{N} \sum^{N}_{n=1} (\hat{y_n} - y_n)^2 cost=N1n=1N(yn^yn)2

泛化

当我们获得数据集时将其分为训练集和测试集,其中训练集数据是不可见的。
数据集划分
因此训练完模型之后我们可能不一定符合 ( x , y ) (x,y) (x,y)的分布,也有可能太过于符合,将噪声也学习进去造成过拟合。显然这不是我们希望看到的,我们应当希望看到我们的模型具有一定的泛化能力,也就是对于没训练过的数据也有较好的识别能力。所以我们要将训练集进行分离。
训练集划分
当在训练集上训练完后再使用开发集进行评估,使得模型具有一定的泛化能力。

代码

# @Filename: LinearModel.py
# @Time    : 2023/1/26 13:09
# @Author  : 筱翼深凉

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.0, 0.1):
    print('w=', w)
    loss_sum = 0
    for x_val, y_val in zip(x_data, y_data):
        y_pred_val = forward(x_val)  # 计算预测值
        loss_val = loss(x_val, y_val)  # 计算误差
        loss_sum += loss_val
        print('\t', x_val, y_val, y_pred_val, loss_val)
    print('MSE=', loss_sum / 3)
    w_list.append(w)
    mse_list.append(loss_sum / 3)
plt.plot(w_list, mse_list)
plt.xlabel('w')
plt.ylabel('LOSS')
plt.show()

作业

# @Filename: Exercise.py
# @Time    : 2023/1/26 13:36
# @Author  : 筱翼深凉
"""
    将模型更换为 y = w * x + b
"""

import numpy as np
from mpl_toolkits.mplot3d import Axes3D
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 + b


# 计算误差
def loss(x, y):
    y_pred = forward(x)
    return (y_pred - y) * (y_pred - y)


W = np.arange(0, 4, 0.1)
B = np.arange(-2, 2, 0.1)
[w, b] = np.meshgrid(W, B)

loss_sum = 0
for x_val, y_val in zip(x_data, y_data):
    y_pred_val = forward(x_val)  # 计算预测值
    loss_val = loss(x_val, y_val)  # 计算误差
    loss_sum += loss_val
print('MSE=', loss_sum / 3)
MSE = loss_sum / 3

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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自动控制节水灌溉技术的高低代表着农业现代化的发展状况,灌溉系统自动化水平较低是制约我国高效农业发展的主要原因。本文就此问题研究了单片机控制的滴灌节水灌溉系统,该系统可对不同土壤的湿度进行监控,并按照作物对土壤湿度的要求进行适时、适量灌水,其核心是单片机和PC机构成的控制部分,主要对土壤湿度与灌水量之间的关系、灌溉控制技术及设备系统的硬件、软件编程各个部分进行了深入的研究。 单片机控制部分采用上下位机的形式。下位机硬件部分选用AT89C51单片机为核心,主要由土壤湿度传感器,信号处理电路,显示电路,输出控制电路,故障报警电路等组成,软件选用汇编语言编程。上位机选用586型以上PC机,通过MAX232芯片实现同下位机的电平转换功能,上下位机之间通过串行通信方式进行数据的双向传输,软件选用VB高级编程语言以建立友好的人机界面。系统主要具有以下功能:可在PC机提供的人机对话界面上设置作物要求的土壤湿度相关参数;单片机可将土壤湿度传感器检测到的土壤湿度模拟量转换成数字量,显示于LED显示器上,同时单片机可采用串行通信方式将此湿度值传输到PC机上;PC机通过其内设程序计算出所需的灌水量和灌水时间,且显示于界面上,并将有关的灌水信息反馈给单片机,若需灌水,则单片机系统启动鸣音报警,发出灌水信号,并经放大驱动设备,开启电磁阀进行倒计时定时灌水,若不需灌水,即PC机上显示的灌水量和灌水时间均为0,系统不进行灌水。
### 回答1: PyTorch深度学习简明实战电子版是一本帮助读者入门深度学习框架PyTorch的书籍。本书内容详细,分为四个部分,分别是:PyTorch初步、图像分类、目标检测以及深度强化学习,能够帮助读者系统地学习深度学习的基础知识、理解和掌握PyTorch框架下的常用模型和算法,并能够在实践中应用这些模型和算法解决实际问题。 在PyTorch初步部分,本书介绍了PyTorch框架的基本使用方法和特点,包括如何创建和操作张量、构建计算图、定义和训练模型等方面的内容。图像分类部分介绍了卷积神经网络(CNN)的基础理论和实现方法,并使用PyTorch框架构建了一个CNN模型,用于解决图像分类问题。目标检测部分介绍了目标检测的基础知识和Mask R-CNN算法,并使用PyTorch实现了Mask R-CNN模型,应用于目标检测问题。深度强化学习部分介绍了深度强化学习的基本理论和实现方法,并使用PyTorch框架实现了深度Q网络(DQN)算法,应用于OpenAI Gym游戏环境中。 本书的内容涵盖了深度学习的多个方面,适合广大读者学习和实践。同时,本书使用Python语言和PyTorch框架,使得读者能够快速上手,掌握深度学习的基础知识和PyTorch框架的用法。最后,本书提供了大量实例代码和练习题,帮助读者深入理解和应用所学知识。 ### 回答2: PyTorch深度学习简明实战电子版是一本介绍PyTorch深度学习框架的实战教程。本书分为三个部分,第一部分是基础知识,包括PyTorch的基本操作、张量、自动求导、线性回归模型等内容;第二部分介绍深度学习的常用模型,包括卷积神经网络、循环神经网络、生成对抗网络等;第三部分是应用案例,包括图像分类、目标检测、自然语言处理等。 书中的案例非常实用,深入浅出地介绍了每个模型的实现原理和使用方法。而且,书中使用的数据集是实际的数据集,例如MNIST手写数字识别、CIFAR-10图像分类等,能够充分体现PyTorch在实际应用中的优势。 本书的特色在于其简洁明了的解方式,将深度学习框架PyTorch的基本操作及其应用形象生动地展现出来。此外,本书还提供了丰富的代码实现、调试和性能优化技巧,为读者提供了一系列实用的工具来应对实际问题。 总之,PyTorch深度学习简明实战电子版是一本非常实用的教材,不仅能够帮助读者快速掌握PyTorch的各项功能,还能够让读者在实践中深入理解深度学习的实现原理。该书对于人工智能相关行业的从业者、学生以及对深度学习感兴趣的读者都是一本值得阅读的好书。 ### 回答3: PyTorch深度学习简明实战电子版是一本针对深度学习初学者推出的实战教程,主要原因是PyTorch是一个非常适合于初学者的深度学习框架,其将深度学习任务分解成容易理解和实现的步骤。此书包含了丰富的实际应用案例,以及详细的实现代码和运行结果分析。通过阅读本书,读者可以学习到深度学习的核心概念,如神经网络、梯度下降、损失函数等,并且能够了解如何使用PyTorch中的各种工具来构建和训练深度神经网络。本书还着重强调了PyTorch的动态图机制,这一点与其他深度学习框架的静态图机制不同,动态图机制允许我们更加直观地进行模型设计和调试。在本书中,作者还涉及了一些高级技术,如循环神经网络、深度卷积网络等,从而为读者提供更加全面的知识体系。总之,PyTorch深度学习简明实战电子版是一本值得推荐的实战教程,既适合初学者入门,也可以帮助专业人士深入了解PyTorch的实际应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值