这样拟合正弦函数你会吗

为了加深大家对深度学习这一概念的理解,尤其是对深度(多层神经网络) 两个字的认识,笔者在本篇文章中将会通过一个拟合正弦函数例子再次介绍“深度”这一概念。但巧妇难为无米之炊,所以接下来笔者首先会以线性回归的实现为例,来简单介绍一下Pytorch;然后再来实现对正弦函数的拟合。

1 动手实现线性回归

1.1 深度学习框架

在前面介绍《跟我一起深度学习》这个专栏时我们就说到后面会使用Pytorch这个框架来进行相应模型的实现,但并未解释到它是用来干什么的。并且如果是接触过深度学习的同学肯定知道深度学习的相关框架不止Pytorch一种,还有Tensoflow、MXNet、PaddlePaddle等等,那我们为什么我们需要这些框架?根据笔者的认知来看,需要这些框架最重要的一个目的就是实现自动求导(Auto grad)

图 1. 常见深度学习框架

在机器学习中,对于简单的线性回归或者是逻辑回归我们还能自己手动求得目标函数关于参数的梯度,但是在深度学习中这一想法几乎是不现实的。因为在深度学习中普遍的网络结构相较于线性回归都要复杂很多,所以如何快速实现对参数梯度求解便是深度学习框架的核心功能之一。

下面就以线性回归为例,来向大家展示一下如何使用Pytorch进行建模。同时需要提醒的是,如果有时间可以自己先行去了解一下Pytorch中的基本操作[1];如果没有时间也没关系,跟着后面的文章学习就是,每遇到一个新的知识点笔者都会进行介绍。

1.2 安装Pytorch

对于Pytorch的安装,官方网站的引导可谓十分友好,相比起Tensorflow简直不能太好。打开Pytorch官网[2],然后点击Get started就能看到如下一张选项图,选择符合自己情况的选项记得得到相应的安装命令:

图 2. Pytorch安装命令索引图

在得到安装命令后,激活之前主机上安装好的虚拟环境,然后运行即可:

图 3. Pytorch安装进程图

如果出现如上提示,则表示Pytorch极其相关依赖库正在安装,如果长时间没有反映可以考虑切换一下安装源。安装成后则可以看到如下提示:

图 4. Pytorch安装成功示例图

1.3 线性回归的实现

  • 导入相关包

    这里首先导入我们需要用到的相关包,在本示例中一共有4个:

    from sklearn.datasets import load_boston
    from sklearn.preprocessing import StandardScaler
    import numpy as np
    import torch
    

    前三个我们之前都用过就不再做介绍,第4个就是我们安装好的Pytorch框架。

  • 载入数据

    def load_data():
        data = load_boston()
        x, y = data.data, data.target
        ss = StandardScaler()
        x = ss.fit_transform(x)# 特征标准化
        x = torch.tensor(x, dtype=torch.float32)
        y = torch.tensor(y, dtype=torch.float32)
        return x, y
    

    上述代码中,前面5行我们之前也都用过;而第6,7行的作用就是将numpy类型的变量转化为Pytorch框架所接受的tensor张量。同时需要注意的是,在使用所有有关torch方法时,其所接收的变量都必须是<class 'torch.Tensor'>类型的,如果不是则需要通过torch.tensor()进行转换。

  • 预测

    def forward(x, weights, bias):  # 预测
        y = torch.matmul(x, weights) + bias
        return y
    

    这几行代码与之前在机器学习中用numpy实现的并无太大差异,只是将np.matul变成了torch.matul。同时,在定义这个函数时我们并没有使用prediction这个名字,而是使用了forward这个词,具体含义我们后续再解释。

  • 定义损失

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值