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

pytorch学习视频——B站视频链接:《PyTorch深度学习实践》完结合集哔哩哔哩bilibili


第二讲 线性模型

  • 以线性模型为例,对神经网络的学习过程说明

    • 准备数据集,训练集和测试集

    • 选择模型,初始化线性模型y = wx + b,初始化权重w为一个随机数random guess

    • 选择评估模型——损失函数loss,针对一个样本的损失

    • 计算出每个样本的损失,算出平均损失(MSE平均平方误差)

    • 最小化误差,不断调整权重w的值(也就是会用到后面的梯度下降法,可以使得损失减少得最快)

主要包括两个源码文件(视频中的练习和作业),内容包括线性模型的训练和三维作图,主要用到zip函数,meshgrid函数三维作图。

源代码:
1. linear_model.py 手敲源码
2.作业 linear_job

1. linear_model.py 手敲源码:

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]

# 模型函数 y= w*x
def foward(x):
    return x * w

# 损失函数
def loss(x, y):
    y_pred = foward(x)
    return (y_pred-y) * (y_pred - y)

# 定义两个列表存放权重和误差 用来画图
w_list = []
mse_list = []

# 给权重W赋予不同的值(0-4)
for w in np.arange(0.0, 4.0, 0.1):
    print('w', w)
    loss_sum = 0
    # 根据输入的两个列表(x_data,y_data)来求出预测值和误差
    for x_val, y_val in zip(x_data, y_data): # zip函数是
        y_pred_val = foward(x_val)
        loss_val = loss(x_val, y_val)
        # 误差求和
        loss_sum += loss_val
        print('\t', x_val, y_val, y_pred_val, loss_val)
        # 平均误差
        loss_mean = loss_sum / 3
    print('MSE', loss_mean)
    w_list.append(w)
    mse_list.append(loss_mean)
# 作图
plt.plot(w_list, mse_list)
plt.xlabel('w')
plt.ylabel('Loss')
plt.show()
 

结果:

代码说明:

zip函数:Python zip() 函数 | 菜鸟教程 (runoob.com)

zip2 = zip(l2, l3)

zip( )将列表中的元素打包成一个个元组 ,然后返回由这些元组组成的列表

zip1 = zip(*l1)

zip(*list),分解列表中的元组

2. 作业——三维图形

linear_job.py

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

x_data = [1.0, 2.0, 3.0]
y_data = [3.0, 5.0, 7.0]

# 模型函数 y= w*x+b
def foward(x):
    return x * w + b

# 损失函数
def loss(x, y):
    y_pred = foward(x)
    return (y_pred-y) * (y_pred - y)

loss_list = []

# 整个过程是先取w的值,再对每一个w取不同的b,计算每一轮的损失
# 给权重W赋予不同的值(0-4)
for w in np.arange(0.0, 4.1, 0.1):
    # 存放单独一个w对应所有b的误差,是一个行向量
    mse_vec = []
    for b in np.arange(0.0, 2.1, 0.1 ):
        loss_sum = 0
        # 根据输入的两个列表(x_data,y_data)来求出预测值和误差
        for x_val, y_val in zip(x_data, y_data):
            y_pred_val = foward(x_val)
            loss_val = loss(x_val, y_val)
            # 误差求和
            loss_sum += loss_val
         # 平均误差
        loss_mean = loss_sum / 3
        mse_vec.append(loss_mean)
    # 算完一整个误差行向量后,将此向量存入loss_list中,最后形状是(41, 21)
    loss_list.append(mse_vec)

fig = plt.figure()
ax = Axes3D(fig)

# X,Y,Z都是二维矩阵,X和Y直接通过meshgrid函数生成,形状为(41, 21)
# X是41行np.arange(0.0, 2.1, 0.1),Y的每一行的数相同,分别对应X的
# 每一行生成对应的坐标,一共有41行,不同的行的数都不相同
X,Y = np.meshgrid(np.arange(0.0, 2.1, 0.1), np.arange(0.0, 4.1, 0.1))
Z = np.asarray(loss_list)
print(X.shape, Y.shape, Z.shape)
print(X)
print("-------------")
print(Y)
ax.plot_surface(X, Y, Z)
plt.show()
 np.meshgrid()理解:3分钟理解np.meshgrid()_littlehaes的博客-CSDN博客_np.meshgrid()

结果:

代码说明:

把meshgrid()函数理解清楚就差不多了,参考博客:numpy.meshgrid()理解_lllxxq141592654的博客-CSDN博客

其它可以参考注释。

以上代码已经在pycharm上经过测试,应该没有问题。

(刚开始pytorch,以上仅作为参考哦,若有错误请指出)

——未完待续……

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答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的实际应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值