PyTorch深度学习入门 || 系列(四)——非线性回归

0 写在前面

  • 这个系列之前学习是线性回归,但是生活中需要解决问题大多数都是非线性的。
  • 本文要讨论的重点就是非线性的问题!

1 激活函数

  • 目的:激活函数实际上是一个非常简单的非线性函数,它作用在线性层的输出,只要让多个带有激活函数的神经元组合在一起,就具有拟合复杂非线性函数的强大能力!

  • 常用的激活函数有:sigmoid、tanh、ReLU、Maxout等!

  • 这里采用的是ReLU函数
    在这里插入图片描述

	torch.nn.functional.relu()

2 人工神经网络

  • 人工神经网络由多层人工神经元组成。
  • 可以通过机器学习训练调整各结点之间连接的权重关系,从而模拟出复杂的非线性函数!
  • 人工神经网络可以按照:输入层、隐含层、输出层,分为三层。
  • 凡是隐含层的层数大于等于2的神经网络,都可以称为深度神经网络。

3 数据处理

  1. x代表输入,是[-3,3)区间内的划分的10000个数
  2. y代表真实输出,是 x 3 x^3 x3m,为了更贴合真实数据,加了一点扰动: 0.3*torch.rand(x.size())
import torch
import matplotlib.pyplot as plt

x = torch.unsqueeze(torch.linspace(-3, 3, 10000), dim=1)
y = x.pow(3) + 0.3*torch.rand(x.size())

plt.scatter(x.numpy(), y.numpy(), s=0.01)
plt.show()
  • 输入情况:
    在这里插入图片描述

4 定义模型

  • Net需要继承nn.Module,里面构造一个隐含层self.hidden 和一个输出增 self.out,经过隐含层的数据需要经过ReLU激活函数进行非线性处理,最后经过输出层。
from torch import nn, optim
import torch.nn.functional as F

class Net(nn.Module):
    def __init__(self, input_feature, num_hidden, outputs):
        super(Net, self).__init__()
        self.hidden = nn.Linear(input_feature, num_hidden)
        self.out = nn.Linear(num_hidden, outputs)

    def forward(self, x):
        x = F.relu((self.hidden(x)))
        x = self.out(x)
        return x
  • 初始化net,设置输入为1维,隐含层节点数为20,输出为1维:
net = Net(input_feature=1, num_hidden=20, outputs=1).cuda()
inputs = x.cuda()
target = y.cuda()

5 完整代码

  • 可以直接运行!
    - 如果你觉得本篇文章对你有帮助的话,感谢收藏点赞关注我哟!
import torch
import matplotlib.pyplot as plt
from torch import nn, optim
import torch.nn.functional as F


x = torch.unsqueeze(torch.linspace(-3, 3, 10000), dim=1)
y = x.pow(3) + 0.3*torch.rand(x.size())

# plt.scatter(x.numpy(), y.numpy(), s=0.01)
# plt.show()


class Net(nn.Module):
    def __init__(self, input_feature, num_hidden, outputs):
        super(Net, self).__init__()
        self.hidden = nn.Linear(input_feature, num_hidden)
        self.out = nn.Linear(num_hidden, outputs)

    def forward(self, x):
        x = F.relu((self.hidden(x)))
        x = self.out(x)
        return x


def train(model, criterion, optimizer, epochs):
    for epoch in range(epochs):
        output = model(inputs)
        loss = criterion(output, target)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

        # if epoch % 80 == 0:
        #     draw(output, loss)
    return model, loss


def draw(output, loss):
    output = output.cpu()
    plt.cla()
    plt.scatter(x.numpy(), y.numpy())
    plt.plot(x.numpy(), output.data.numpy(), 'r-', lw=5)
    plt.text(0.5, 0, 'loss=%s' % (loss.item()), fontdict={'size':20, 'color':'red'})

    plt.show()
    plt.pause(0.005)


net = Net(input_feature=1, num_hidden=20, outputs=1).cuda()
inputs = x.cuda()
target = y.cuda()

optimizer = optim.SGD(net.parameters(), lr=0.01)
criterion = nn.MSELoss()

net, loss = train(net, criterion, optimizer, 10000)
print("final loss:", loss.item())



  • 最后的输出结果
    在这里插入图片描述

  • 中间的图(已经失去耐心)
    在这里插入图片描述

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《PyTorch深度学习入门与实战》是一本以PyTorch为工具,介绍深度学习基础知识和实践的书籍。在本书中,作者通过简洁易懂的语言,结合实际案例,帮助读者理解深度学习的基本概念和原理,并教授如何使用PyTorch库来实现各种深度学习模型。 本书内容主要分为两部分,第一部分是深度学习的基础知识,包括神经网络、卷积神经网络、循环神经网络等;第二部分是深度学习的实践技巧,包括数据预处理、模型训练、模型优化等。通过这两部分的学习,读者可以逐步掌握深度学习的基本原理和实践技巧。 此外,本书还特别注重实战,为读者提供了大量的代码实例和实战案例。这些实例和案例不仅包括经典的深度学习任务,如图像分类、目标检测和语言生成等,还包括一些实际应用,如机器翻译、垃圾邮件识别等。通过这些实例和案例的学习,读者可以更好地理解深度学习的实际应用和解决实际问题的能力。 总的来说,本书以PyTorch为工具,以深度学习基础知识和实际案例为主线,通过深入浅出的讲解,帮助读者入门深度学习,并掌握使用PyTorch来实现深度学习模型的能力。无论是对于初学者还是有一定经验的开发者来说,《PyTorch深度学习入门与实战》都是一本很好的学习资料。 ### 回答2: 《PyTorch深度学习入门与实战》是一本介绍PyTorch深度学习库的教程图书。PyTorch是一种在机器学习领域广泛使用的开源深度学习库,它以动态图和静态图的混合方式,提供了灵活、高效的工具来构建和训练神经网络模型。 该书的目的是帮助读者快速入门PyTorch,并通过实战案例实践所学的知识。书中提供了丰富的示例代码和实验,从基础概念开始,逐步引导读者理解和掌握PyTorch的核心功能和应用。 在第一部分中,书籍详细介绍了PyTorch的安装和配置,包括如何创建和管理虚拟环境,以及如何使用pip安装PyTorch及其相关库。 第二部分主要介绍了PyTorch张量(Tensor)的基本操作和运算。这是深度学习中的基础,掌握好张量的操作对于后续的模型构建和训练常重要。本书中通过大量的示例代码和实验,让读者逐步熟悉张量的创建、索引、切片以及各种元素级别的运算操作。 第三部分是关于PyTorch的神经网络模块(nn)的详细介绍,包括如何使用nn.Module构建网络模型,以及如何使用nn.functional模块定义前向传播方法。同时也介绍了常用的损失函数和优化器,在训练模型时如何选择和使用它们。 第部分是实战篇,书中通过几个典型的深度学习任务案例,如图像分类、目标检测和自然语言处理等,示范了如何使用PyTorch构建和训练神经网络模型。每个案例都包括了详细的代码解析和实验结果展示,读者可以通过这些案例学习和掌握如何在实际项目中应用PyTorch进行深度学习。 总之,《PyTorch深度学习入门与实战》是一本常实用的教程图书,适合对PyTorch感兴趣的初学者和有一定基础的开发者阅读。通过阅读本书,读者可以系统性地学习和掌握PyTorch深度学习框架,为深度学习的实战应用提供基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值