pytorch线性回归代码_深度学习快速入门:一小时带你做完十个练手项目(附完整代码)...

每天给小编五分钟,小编用自己的代码,让你轻松学习人工智能。本文将带你用具体代码做完十个深度学习练手小项目,让你只用一小时,快速熟悉深度学习开发,打牢人工智能基础。野蛮智能,小白也能看懂的人工智能。

d01ae9d9d63d989e0d52c1bb9b2cf1d3.png

如果你现在还没有搭建好你的深度学习环境,那么小编建议你搭建好一个pytorch的cpu版本,具体参考小编的文科生也能看懂的深度学习入门宝典:pytorch+tensorflow快速上手,快速搭建你的深度学习开发环境。下面我们进入实战环节,带你做完十个深度学习练手小项目!

第一个:创建一个矩阵,并对矩阵进行求导

干货快递站:

  1. 如果你对矩阵不了解,那也没关系,本文不涉及数学知识。你只需知道:矩阵就是用来存储数的一个单元。在一个矩阵中可以存入大量的数字,而不用去挨个指定它们的含义,这样可以方便我们对大量数字进行各种操作,所以在数据处理领域,会大量用到矩阵。
  2. 导数对于人工智能的重要意义是:导数可以表现变量变化的速度,通过求导可以找到变量变化速度最快的方向,然后令参数向那个方向收敛,以此来加快训练速度。下面小编带你创建一个矩阵,然后对它进行求导。
5ea3d5c6c1e111c88d68cc2bdae846fa.png

代码配送营

第一步,把安装好的框架导入进来,也就是import + 这个框架的名字(torch):import torch

第二步,在pytorch中,默认的数据类型是Tensor,直接翻译的意思是张量,你可以直接理解为一个能力强大的数,这个数可以表示矩阵,所以我们可以直接定义一个矩阵(4行2列):matrix = torch.ShortTensor([[1,2],[3,5],[7,8],[9,7]])。但是这个矩阵本身是不能直接求导数的,需要先把矩阵变成一个变量,所以我们要导入一个这样功能的函数Variable:from torch.autograd import Variable(autograd这个部分完成的就是自动求导的功能,grad是导数的意思)

第三步,matrix现在还是一个单纯的矩阵,Variable(matrix,requires_grad =True),经过这一步就把matrix变成了一个变量,就可以在计算图中对这个变量进行求导了,计算图可以理解为:用来计算的式子,或者是一个计算的过程,在后边的练习项目里我会再提到,所以我们这里构建一个简单的计算图,:y = matrix*2。

第三步,下面进行求导,输入代码:y.backward(torch.Tensor([1,0.1,0.01,0.001])),y保存的是matrix*2这个计算图的结果,backward函数对我们刚才定义的变量matrix进行自动求导。这里边的参数的含义是:定义一个数组,这个数组有四个数,每个数都会对应到矩阵中的一行,与求得的导数相乘。这一步骤应用的十分广泛,因为我们在进行梯度下降时,并不能直接把计算得到的梯度直接来用,而要衰减一下,防止参数变得太快,错过了最佳参数,这就是衰减系数。

第四步,取出导数:print(matrix.grad)

下图是我的代码和运算结果,大家可以作为参考。

03c400debb64e8150bf8ab7fd7945886.png
06aada29192d131f99cf16b0ee0be907.png

第二个,实现线性回归

干货快递站:

1,线性回归快速理解:如果你单身,那你一定还没有结婚。那么,每个丈母娘选女婿都有一定的标准,比如,人品,财力等等,它们都有一定的权重(W1,W2,W3……),你在每个标准上都有一定的得分(X1,X2,X3……),那么将你的得分和对应的权重相乘(W1*X1+W2*X2+W3*X3……),就得到了你的最终得分。那么你就可以知道你是不是一个合格的女婿了。一句话来总结,线性回归就是权重乘以得分,深度学习就是根据历史的数据,学习到这个权重,然后在新的数据上预测出结果。

2,线性回归虽然看起来很简单,但它确是非常实用的,因为它的数学理论扎实,可解释性强,每一个标准对应的权重,结果都很明朗。所以在工业界获得了很好的应用,在很多项目上,如果没有太好的解决方案,就首先拿这个线性回归来试一试。所以,牢牢掌握线性回归是非常重要的。

代码配送营:

1,创建数据集,我们这里为了学习的方便,就直接自己创建一组数据,这组数据的特点是,不是严格的直线上的点,让模型自己去拟合。

x_train = np.array([[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]],dtype=np.float32)

y_train = np.array([[2.1],[3.4],[5.6],[6.7],[7.8],[7.6],[7.9],[8.6],[10.9],[11.8],[14.3],[12.1]],dtype=np.float32)

创建好了点,我们可以使用matplotlib把这12个点画出来。代码如下:

import matplotlib.pyplot as plt

import numpy as np

plt.scatter(x_train,y_train)

plt.show()

然后会得到如下结果:

14fbf216e6069753ff26b7c00a1e7ef7.png

2,还和之前一样导入torch导入Variable,然后这里多了一个新的小伙伴,就是nn模块,nn指的是neaural network,神经网络的意思,这个模块可以用来实现神经网络的很多操作:import torch.nn as nn

下面看具体的代码:

7929d53ee92d46e1347fed6fa5926f33.png

代码就是这样,为了直观,先给大家看一下运行结果:

5ed1d8babfcba8ffbb21ba6e941445e5.png

关于具体的代码分析,由于略微复杂一些,我会在下篇文章进行讲解。剩下的小项目也会在这几天陆续写出来。欢迎大家一起来进步!野蛮智能,小白也能看懂的人工智能。大家有什么问题或者见解可以在评论区留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值