每天给小编五分钟,小编用自己的代码,让你轻松学习人工智能。本文将带你用具体代码做完十个深度学习练手小项目,让你只用一小时,快速熟悉深度学习开发,打牢人工智能基础。野蛮智能,小白也能看懂的人工智能。
![d01ae9d9d63d989e0d52c1bb9b2cf1d3.png](https://i-blog.csdnimg.cn/blog_migrate/dc2a394dff20d7fb544f4200947e41f7.jpeg)
如果你现在还没有搭建好你的深度学习环境,那么小编建议你搭建好一个pytorch的cpu版本,具体参考小编的文科生也能看懂的深度学习入门宝典:pytorch+tensorflow快速上手,快速搭建你的深度学习开发环境。下面我们进入实战环节,带你做完十个深度学习练手小项目!
第一个:创建一个矩阵,并对矩阵进行求导
干货快递站:
- 如果你对矩阵不了解,那也没关系,本文不涉及数学知识。你只需知道:矩阵就是用来存储数的一个单元。在一个矩阵中可以存入大量的数字,而不用去挨个指定它们的含义,这样可以方便我们对大量数字进行各种操作,所以在数据处理领域,会大量用到矩阵。
- 导数对于人工智能的重要意义是:导数可以表现变量变化的速度,通过求导可以找到变量变化速度最快的方向,然后令参数向那个方向收敛,以此来加快训练速度。下面小编带你创建一个矩阵,然后对它进行求导。
![5ea3d5c6c1e111c88d68cc2bdae846fa.png](https://i-blog.csdnimg.cn/blog_migrate/1d4acee1fa673ac92add7f7b07e564ce.jpeg)
代码配送营:
第一步,把安装好的框架导入进来,也就是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](https://i-blog.csdnimg.cn/blog_migrate/ff1bf9a842c8edcf74eb4f749ee64e51.jpeg)
![06aada29192d131f99cf16b0ee0be907.png](https://i-blog.csdnimg.cn/blog_migrate/dc834138ea3511eef9de995ad4cc5b40.jpeg)
第二个,实现线性回归
干货快递站:
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](https://i-blog.csdnimg.cn/blog_migrate/d08cb7677f03a5fd4a2b17762442ee1d.jpeg)
2,还和之前一样导入torch导入Variable,然后这里多了一个新的小伙伴,就是nn模块,nn指的是neaural network,神经网络的意思,这个模块可以用来实现神经网络的很多操作:import torch.nn as nn
下面看具体的代码:
![7929d53ee92d46e1347fed6fa5926f33.png](https://i-blog.csdnimg.cn/blog_migrate/110433b948468bdda3dee1003514ed7c.jpeg)
代码就是这样,为了直观,先给大家看一下运行结果:
![5ed1d8babfcba8ffbb21ba6e941445e5.png](https://i-blog.csdnimg.cn/blog_migrate/e2a8a1b5b2a0b56775019e121fcea9a8.jpeg)
关于具体的代码分析,由于略微复杂一些,我会在下篇文章进行讲解。剩下的小项目也会在这几天陆续写出来。欢迎大家一起来进步!野蛮智能,小白也能看懂的人工智能。大家有什么问题或者见解可以在评论区留言。