Deep Learning with Pytorch-学习笔记(一)

张量:

1.张量是PyTorch中基本的数据结构。张量是一个数组,即一种存储数字集合的数据结构,这些数字可通过索引单独访问,也可通过多个索引进行索引。

2.张量与list的区别

   Python列表或数字元组(tuple)是在内存中单独分配的Python对象的集合;

   PyTorch张量或NumPy数组(通常)是连续内存块上的视图(view),这些内存块存有未封装(unboxed)的C数值类型。

3.张量与存储

      数值分配在连续的内存块中,由torch.Storage实例管理。存储(Storage)是一个一维的数值数据数组,例如一块包含了指定类型(可能是float或int32)数字的连续内存块。

    PyTorch的张量(Tensor)就是这种存储(Storage)的视图(view)

张量知道如何将一对索引转换为存储中的某个位置,存储始终是一维的,与引用它的任何张量的维数无关。因此,更改存储的值当然也会更改引用它的张量的内容。可以说张量只是存储的一种表现形式view。

4.尺寸、存储偏移、步长

存储偏移,就是当前元素距离第一个元素隔了几个元素,步长,就是在某个维度上,例如:[0][1] ->[1][1],需要位移几个元素,需要位移几个,都是在Storage()上进行计算需要位移的个数的。

同时注意,张量转置后,它的尺寸和步长都会发生改变,但是它的存储和原来的张量是共享的。改变一个另一个也会发生改变,可以使用clone()。

同时转置后的张量不是contiguous的,可以使用contiguous方法使张量的存储变成连续的,有利提升性能。

5.数据类型

张量构造函数(即tensoroneszeros之类的函数)的dtype参数指定了张量中的数据类型。

  • torch.float32torch.float —— 32位浮点数
  • torch.float64torch.double —— 64位双精度浮点数
  • torch.float16torch.half —— 16位半精度浮点数
  • torch.int8 —— 带符号8位整数
  • torch.uint8 —— 无符号8位整数
  • torch.int16torch.short —— 带符号16位整数
  • torch.int32torch.int —— 带符号32位整数
  • torch.int64torch.long —— 带符号64位整数

每个torch.floattorch.double等等都有一个与之对应的具体类:torch.FloatTensortorch.DoubleTensor等等。torch.int8对应的类是torch.CharTensor,而torch.uint8对应的类是torch.ByteTensortorch.Tensortorch.FloatTensor的别名,即默认数据类型为32位浮点型。

数据类型转换有三种方法:

double_points = torch.zeros(10, 2).double()

double_points = torch.zeros(10, 2).to(torch.double)

short_points = points.type(torch.short)

6.索引张量

points[1:] # 第1行及之后所有行,(默认)所有列

points[1:, :] # 第1行及之后所有行,所有列

points[1:, 0] # 第1行及之后所有行,仅第0列

7.与numpy的互通性

例子:要从points张量创建NumPy数组,请调用:

         points = torch.ones(3, 4)

         points_np = points.numpy()

这种形式下,points和points_np共享内存,改变其中一个值,其他都会改变。

         a = np.array([1, 2, 3])
         b = torch.tensor(a)

这种情况下,不是共享内存的,改变一个,另一个不会改变。

8.序列化张量

当想要保存张量时,有两种方式,一种是保存为Pytorch可识别的,另一种是引入h5py库,利用numpy保存为可以通用的数据格式。

9.将张量引入到GPU上

张量存在device的概念,可以使用device = 'cuda',将其转移到GPU上运算,此时会在GPU上拷贝出一个张量。

10.张量API

### 回答1: 深度学习是一项非常热门的技术,在人工智能领域得到广泛应用。PyTorch是一种使用Python编程语言的开源深度学习框架,它非常适合研究和开发深度学习模型。为了帮助初学者更好地学习PyTorch深度学习技术,CSDN(全球最大中文IT社区)开设了“DeepLearning with PyTorch”系列课程。 这个系列课程以实践为主要教学方式,让学生在实际操作中掌握PyTorch深度学习的技能。在学习过程中,学生可以学到基础的模型结构设计,各种优化算法,如学习率调整、梯度下降等,并且可以在实战操作中学到如何使用PyTorch完成各种实际应用,例如图像分类和识别,自然语言处理等等。 这门课程的受众群体不仅仅是那些想要从事人工智能开发的工程师,它对于对深度学习感兴趣的学生和科研人员也是非常有用的。这是因为在这个课程中,教师基于实际使用场景和数据集介绍了PyTorch深度学习技术,从实践中总结出的方法和经验不仅可以快速提升工程开发效率,也可以加深对深度学习理论的理解。 总之,“DeepLearning with PyTorch”系列课程非常实用和有趣,可以为初学者提供全面而深入的深度学习知识,帮助他们掌握用PyTorch来开发深度学习模型的基础技能。 ### 回答2: Deep Learning是一种用于训练多层神经网络的机器学习方法,已被广泛应用于视觉、语音、自然语言处理等领域。而PyTorch是一种开源的深度学习框架,具有快速、灵活、易用等优点,因此受到了越来越多的关注和使用。 CSDN是一个致力于IT技术在线学习和分享的平台,在其中学习deeplearning with pytorch将能够获取丰富的知识和实践经验。首先,我们需要了解PyTorch的基本概念和操作方法,如如何构建网络模型、定义损失函数和优化器、进行前向传播和反向传播等。然后,我们可以学习如何使用PyTorch进行数据预处理,如数据清洗、标准化、归一化等。此外,还可了解如何使用PyTorch进行分布式训练、混合精度训练等高级技术,以及如何在GPU上进行训练和推理等实践技巧。 总之,在CSDN上学习deeplearning with pytorch,能够让我们更好地掌握PyTorch的使用技巧,帮助我们更快、更好地完成深度学习的应用开发和研究工作。同时也可以通过活跃在CSDN平台上与其他开发者的交流来共同进步。 ### 回答3: PyTorch是一种针对深度学习任务的开源机器学习库,它支持快速的原型设计和大量的实验,是当前科学界和工业界中最受欢迎的深度学习框架之一。CSDN推出的Deeplearning with Pytorch系列课程就是致力于教授学生如何使用PyTorch进行深度学习,以及在此基础上更深层次的研究探索。 此系列课程包含了从入门到进阶多个方面的内容,在基础课程中,学员将学会如何使用PyTorch进行深度学习的各个方面,包括但不限于神经网络、优化器、损失函数等,使其基本掌握PyTorch的使用方法。而在进阶课程中,以一些大型深度学习任务为基础,详细介绍了超参数优化、神经网络模型架构选择、分布式训练、自己写网络模型等更高级的知识,通过深度剖析一些开源库的源码,为学员提供了很多实现深度学习任务的技巧和方法。 课程的开设不仅帮助了很多想更深入了解深度学习的爱好者,也有助于那些打算将深度学习应用在自己的科研工作中的研究者们更加快捷、有效地完成自己的研究任务。相信随着人工智能的不断发展,PyTorch这样的框架将会发挥越来越重要的作用,而帮助大家掌握这些工具的Deeplearning with Pytorch系列课程也必将得到更多的关注和支持。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值