《PyTorch 深度学习实践》第2讲 线性模型

该专栏内容为对该视频的学习记录:【《PyTorch深度学习实践》完结合集】

该专栏的全部代码、数据和课件全放在我的GitHub了,欢迎自取

一个简单示例:y=w*x

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 = []  # 存储不同的参数w
mse_list = []  # 存储不同参数w下的均方误差MSE
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_pred_val = forward(x_val)  # 预测值
        loss_val = loss(x_val, y_val)  # 一个样本损失值
        l_sum += loss_val  #把每个样本的损失值求和
        print('\t', x_val, y_val, y_pred_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.xlabel('w')
plt.ylabel('Loss')
plt.show()
w= 0.0
	 1.0 2.0 0.0 4.0
	 2.0 4.0 0.0 16.0
	 3.0 6.0 0.0 36.0
MSE= 18.666666666666668
w= 0.1
	 1.0 2.0 0.1 3.61
	 2.0 4.0 0.2 14.44
	 3.0 6.0 0.30000000000000004 32.49
MSE= 16.846666666666668
w= 0.2
	 1.0 2.0 0.2 3.24
	 2.0 4.0 0.4 12.96
	 3.0 6.0 0.6000000000000001 29.160000000000004
MSE= 15.120000000000003
......
......
w= 1.9000000000000001
	 1.0 2.0 1.9000000000000001 0.009999999999999974
	 2.0 4.0 3.8000000000000003 0.0399999999999999
	 3.0 6.0 5.7 0.0899999999999999
MSE= 0.046666666666666586
w= 2.0
	 1.0 2.0 2.0 0.0
	 2.0 4.0 4.0 0.0
	 3.0 6.0 6.0 0.0
MSE= 0.0
w= 2.1
	 1.0 2.0 2.1 0.010000000000000018
	 2.0 4.0 4.2 0.04000000000000007
	 3.0 6.0 6.300000000000001 0.09000000000000043
MSE= 0.046666666666666835
......
......

output_1_1

以上可以发现w=2时均方误差MSE最小

zip函数用法:

list(zip(x_data, y_data))  # zip可以把两个数据压缩打包; list可以把zip解压成列表
[(1.0, 3.0), (2.0, 5.0), (3.0, 7.0)]

作业:y=w*x+b

import numpy as np
import matplotlib.pyplot as plt

# 这里假设真实方程为:y=2*x+1
x_data = [1.0, 2.0, 3.0]
y_data = [3.0, 5.0, 7.0]


# 返回预测值
def forward(x):
    return x * w + b


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


mse_list = []  # 存储不同参数下的均方误差MSE
w_list = np.arange(0.5, 3.1, 0.1)
b_list = np.arange(.0, 3.1, 0.1)
i = 0
# 穷举
for w in w_list:
    for b in b_list:
        l_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)  # 一个样本损失值
            l_sum += loss_val  #把每个样本的损失值求和
        mse_list.append(l_sum / 3)
        # print('w:', w, 'b:', b, 'MSE:', l_sum / 3)
        if i == 475:
            print('w:', w, 'b:', b, 'MSE:', l_sum / 3)
        i += 1

# 绘图
ll_sum = 0
[ww, bb] = np.meshgrid(w_list, b_list)
for x_val, y_val in zip(x_data, y_data):
    loss = (ww * x_val + bb - y_val) ** 2
    ll_sum += loss
fig = plt.figure(figsize=[10, 6])
ax = plt.axes(projection="3d")
ax.plot_surface(ww, bb, ll_sum / 3, cmap="rainbow")
ax.set_xlabel('w')
ax.set_ylabel('b')
plt.show()
w: 1.9999999999999996 b: 1.0 MSE: 1.3805065841367707e-30

output_6_1

在这么多输出中找出使损失函数最小的w和b:

min(mse_list), mse_list.index(min(mse_list))
(1.3805065841367707e-30, 475)

再回源代码中上面34行处写if语句,当索引为475时输出对应的w b,重新运行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值