十分钟快速入门计算机网络,深度学习快速进阶:十分钟带你做完四大练手项目(附完整代码)...

每天给小编五分钟,小编用自己的代码,带你轻松学习人工智能!本文将会带你做完两个深度学习练手项目,让你快速熟练掌握深度学习框架pytorch!野蛮智能,小白也能看懂的人工智能。

b620d47a5f244b509251ed9513791833.png

如果你还没有搭建好自己的深度学习框架,请参考小编的写给纯小白的深度学习环境搭建宝典:pytorch+tensorflow,用这份快速搭建的宝典完成框架搭建。下面进入实战!

挑战pytorch五大虎将

干货快递点:

三秒钟理解“张量”:pytorch中的数据表达形式是张量(Tensor),TensorFLow中也有这个概念就是Tensor,之所以用Tensor,是因为它的表现能力强大,不论多么复杂的数据都能通过它表示出来。本质上来说,张量就是坐标超过两维的数组。例如,股票的涨跌有一百个影响因素,那一组股票数据就有一百个维度,那这样的多组数据就是一个张量。

pytorch中有以下类型的张量:

32位浮点型定义方法为:torch.FloatTensor()

64位浮点型定义方法为:torch.DoubleTensor()

16位整形定义方法为:torch.IntTensor()

32位整形定义方法为:torch.ShortTensor()

64位整形定义方法为:torch.LongTensor()

“()”内是你要定义的数据。下面进入代码实战。

代码配送站:

eaf635bc3cc2ac1bc107f93f5947bd43.png

这里小编定义了FloatTensor类型的张量,在“()”内存储了一个二维数组,然后将他进行输出。也可以表示更高维的,只需要多加入一个“[]”,每一层中括号,就表示多一个维度。代码如下:

641113627bb26d1b36f7f98a54c3b61f.png

注意,这里的"()"是没有含义的,“()”里的“[]”才是表示数,一层中括号表示向量,两层汇中括号表示矩阵,三层和更多的中括号表示更高维度的数组。大家可以自己再练习着把五种类型的张量都定义一边并进行输出。

征战pytorch变量求导

干货快递点:

深度学习本质上是一个优化系统,想要优化就要找到最低(高)点,就必须要对参数进行求导。pytorch的优点之一就是张量的自动求导功能,一个张量如果变成一个变量,就可以在计算图中让这个变量自动求导,我们只需要取出这个导数对它进行优化即可。把一个张量变为一个变量的方法就是Variable(这个tensor),把一个张量传入这个函数就会被变成变量了,就可以自动求导了。

代码配送站:

4388114f05f646ddf01fd80e26fc61a8.png

不过这里需要注意四点:

在使用Variable之前需要先导入这个函数,这个函数在torch.autograd模块里。在进行Variable操作时,需要指定是否需要求导,grad是求导的意思。这里我们传入True。backward内需要传入参数,第一个数会与数组的第一行相乘,第二个数乘以第二行,以此类推。如果想要令导数直接是原导数,只需要在backward参数内只输入一个1即可。如图:

08211c4e667c196a7c7d05e0dd91ca74.png

一组代码,让你的数据集被完美处理

干货快递点:

如果说计算机语言分为面向对象和面向过程。那深度学习一定是面向数据,深度学习归根结底是从数据中找到规律,所以需要对数据进行操作。那么就需要你能够熟练处理你的数据集。关于数据集的模块,在torch.utils.data中有一个类是Dataset。重写这个类,就可以定义我们自己的数据类,进而用我们的数据类处理我们的数据。

代码配送站:

4758fb33b0f4bfb9bd54e1d5a2bb88f6.png

这组代码略微复杂一些,这里进行详细的讲解:

导入Dataset类,这个类在torch.utils.data内。使用from......import......导入。重写Dataset类,就需要命名一个新的类,并把原来的Dataset类传入括号内,声明继承关系。重写Dataset类,就必须要重写len()和getitem()函数,这个函数我们设置的是可以读取txt文本。所以都是对txt文本的操作。最后在主函数中进行测试,把数据集和路径传入我们的类中,新建对象,然后进行输出,就可以看到数据集中的结果。这里的数据集是小编自己写的,是为了演示方便而写的,如果大家想跑这段代码,可以自己随便写一个文本。pytorch中的神经网络

干货快递点:

pytorch中有一个模组,叫做nn.Module(),其中nn指的是neaural network,没错就是神经网络的意思。凡是跟神经网络有关的函数都在这里,神经网络的威力强大,相信大家都有所耳闻,尤其是深度神经网络(深度学习)。如果不了解,在小编别的文章里有详细的讲解。下面我们通过这个模块来实现一个简单的神经网络。

代码配送站:

由于直接建立一个完整的神经网络略为复杂,代码量比较大一些。我会在下篇文章里专门进行分析,并为大家能构建一个神经网络。这里只简单的讲解神经网络最核心的部分,大家可以先练习。

cf58179b513cd2c63cc6d131b432520d.png

这段代码跟上一段代码一样,重写了nn.Module这个类。nn_net是类名。super是进行初始化的,声明这里是重写父类方法,而不是覆盖父类方法。因为我们还要使用父类的方法,所以这里不进行覆盖。这里的第5行代码通过self.Conv2d实现了一个二维的卷积层。最后几行定义了一个前向传播函数。

7840348b3b8ae4b31b75fb58bfc6cd37.png

本文先到这里,下一篇文章继续带大家向深度学习前进!野蛮智能,小白也能看懂的人工智能!有什么问题可以在评论区留言!小编看到就会回。

举报/反馈

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值