动手学深度学习学习笔记(1)

深度学习简介
目前机器学习和深度学习应用共同的核心思想,逆向思考,用数据编程
机器学习是一门讨论各式各样的适用于不同问题的函数形式,以及如何使用数据来有效的获取函数参数具体值的学科。
深度学习是指机器学习中的一类函数,它们的形式通常为多层神经网络。
绝大多数神经网络都包含以下的核心原则:
1.交替使用线性处理单元和非线性处理单元,它们经常被称为层
2.使用链式法则(即反向传播来更新网络的参数)
随着发展,计算力的增长大于数据量的增长大于存储容量的增长,这种趋势使得我们需要提升存储的利用效率,例如使用非线性处理单元。这也响应导致了机器学习和统计学的最优选择从广义线性模型及核方法变化为深度多层神经网络。

深度学习能够长久发展的部分原因
1.优秀的容量控制方法,如丢弃法,使大型网络的训练不再受制于过拟合。这是靠在整个网络中注入噪声而达到的,如训练时随机将权重替换为随机的数字
2.如何在不增加参数的情况下扩展一个系统的记忆容量和复杂度。注意力机制使用了一个科学系指针结构来构建出一个精妙的解决办法。与其在像机器翻译这样的任务中记忆整个句子,不如记忆指向翻译的中间状态的指针。由于生成译文前不需要储存整句原文的信息,这样的结构使准确翻译长句变得可能。
3.记忆网络和神经编码器-解释器这样的多阶设计使得针对推理过程的迭代建模方法变得可能。
4.生成对抗网络可使用人以算法来生成输出的这一特性为许多技巧打开了新的大门。
5.构建分布式并行训练算法的能力已经有了极大的提升。可以满足在大型数据集上进行训练的需要

数据操作

在pytorch中,torch.Tensor是存储和变换数据的主要工具,Tensor和Numpy的多维数据非常相似。然而,Tensor提供GPU计算和自动求梯度等更多嫩共,Tensor更适合深度学习

“tensor”这个单词一般可译作“张量”,张量可以看作是一个多维数组。标量可以看做是0维向量,向量可以看作一维向量,矩阵可以看作二维向量。

创建Tensor

首先导入Pytorch:

import torch

然后创建一个5×3的未初始化的Tensor

x = torch.empty(5.3)
print(x)

输出

tensor([[2.0963e-38, 8.1976e-43, 2.0963e-38],
        [8.1976e-43, 2.0964e-38, 8.1976e-43],
        [2.0964e-38, 8.1976e-43, 2.0963e-38],
        [8.1976e-43, 2.0963e-38, 8.1976e-43],
        [2.0963e-38, 8.1976e-43, 2.0963e-38]])

创建一个5×3的随机初始化的Tensor:

x = torch.rand(5,3)
print(x)

输出

tensor([[0.7999, 0.9090, 0.0496],
        [0.1335, 0.5244, 0.1695],
        [0.8128, 0.8961, 0.8869],
        [0.5880, 0.8155, 0.9505],
        [0.8333, 0.4594, 0.0965]])

创建一个5×3的long型全0的Tensor:

x = torch.zeros(5,3,dtype = torch.long)
print(x)

输出

tensor([[0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0],
        [0, 0, 0]])

还可以根据数据直接创建

x = torch.tensor([5.5,3])
print(x)

输出

tensor([5.5000, 3.0000])

还可以通过现有的Tensor来创建,此方法会默认重用输入Tensor的一些属性,例如数据类型,除非自定义数据类型。

x = x.new_ones(5,3,dtype = torch.float64)
#返回的tensor默认具有相同的torch.dtype torch.device
#torch.device代表将torch.Tensor分配到的设备的对象
print(x)

x = torch.randn_like(x,dtype = torch.float)
#指定新的数据类型
print(x)

输出

tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]], dtype=torch.float64)
tensor([[-1.4106, -0.4798, -0.8518],
        [-1.0560,  0.3848,  0.3631],
        [ 1.5372, -0.8653, -1.9772],
        [-1.7165, -0.2785,  2.0197],
        [ 0.2080, -0.3303,  1.0794]])

可以通过shape或者size()来获取Tensor的形状

print(x.size())
print(x.shape)

输出

torch.Size([5, 3])
torch.Size([5, 3])

重点:返回的torch.Size其实就是一个tuple,支持所有tuple的操作。

其余常用创建Tensor的函数

函数功能
Tensor(*sizes)基础构造函数
tensor(data,)类似np.array的构造函数
ones(*sizes)全1Tensor
zeros(*sizes)全0Tensor
eye(*sizes)对角线为1,其他为0
arrange(s,e,step)从s到e,步长为step
linspace(s,e,steps)从s到e,均匀切分成steps份
rand/randn(*sizes)均匀/标准分布
normal(mean,std)/uniform(from,to)正态分布/均匀分布
randperm(m)随机排列
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值