在2012年的Imagenet运动之后,深度学习取得了突飞猛进的发展。 深度学习现在慢慢的变成了我们日常生活中不可或缺的一部分,当我们与语音助手交谈、使用家庭自动化系统、写电子邮件等时,许多算法都在运行。事实上,它的影响是如此之大,以至于我们大家可以在亚马逊上看到名为“婴儿的神经网络”的书籍:D
就其核心而言,深度学习仅仅是人脑工作方式的缩影(忽略了人脑中存在的实际复杂性,这种复杂性仍然很难复制)。 计算机使用成百上千个跨越深层的神经元连接从它的输入和输出中学习(因此有了“深度学习”这个词)。
在每次迭代中对权值来优化,使预测损失最小化,并以最高精度预测输出。计算机是机器,机器只懂数字。因此,在底层,我们讨论的所有这些权重都是n维矩阵或张量。
由于每个权值都是一个n维矩阵或张量,权值的学习和优化涉及数百万个矩阵乘法。在过去的6-7年中,我们已看到许多DL框架的出现,它们简化了这个任务。
Pytorch是一个流行的深度学习框架,由FacebookAI研究(FAIR)开发和维护,用于处理张力。自2016年1.0.0发布以来,由于使用的简单性和灵活性,它获得了极大的普及。在本文中,我们将主要关注使用Pytorch的一些核心张量运算。您可能想通过这一个博客了解如何安装PyTorch的详细说明。
在上面的示例中,我创建了一个3X2X4张量,torch.size返回3个维度。 我们的张量在外括号内有3个元素,每个元素都是一个矩阵。 每个矩阵同样有2个元素,每个元素都是一个包含4个元素的列表。
torch.mm返回任意两个输入矩阵matr1和mat2的矩阵乘法(不是元素一一对应相乘)
在上面的示例中,mat1和mat2的大小均为3X3。 因此,torch.mm的输出大小也为3X3。 我们大家可以看到可以使用“ @”运算符代替torch.mm来执行相同的操作。
对于不是矩阵或大于2维的张量,torch.mm不起作用,我们可以使用torch.mul进行逐个元素的乘法
通过使用dim参数并将其设置为1,我们可以水平连接2个张量。 默认设置为0,这将导致垂直串联。
我们能够正常的看到逐元素乘法适用于任何维度的张量。使用*运算符或者使用a.mul(b),其中a和b为输入张量,也能轻松实现torch.mul的功能。
这里,我们利用randn函数来建立了一个由随机数组成的4x4张量。torch.inverse可计算x的逆。Inv(x) @ X 则会返回一个单位矩阵。
只有在输入张量的各个维度的元素数量相同时才可以正常使用torch.inverse
torch.inverse 同样适用于3维张量。但是张量在各个方向上的维度需要相同或者为方阵张量。
雷锋字幕组是一个由 AI 爱好者组成的翻译团队,汇聚五百多位志愿者的力量,分享最新的海外AI资讯,交流关于人工智能技术领域的行业变革与技术创新的见解。
团队成员有大数据专家、算法工程师、图像处理工程师、产品经理、产品运营、IT咨询人、在校师生;志愿者们来自IBM、AVL、Adobe、阿里、百度等有名的公司,北大、清华、港大、中科院、南卡罗莱纳大学、早稻田大学等海内外高校研究所。
如果,你也是位热爱分享的AI爱好者。欢迎与雷锋字幕组一起,学习新知,分享成长。