【学习笔记】动手学深度学习2-2.2

动手学深度学习笔记2

2.1 数据操作

张量(tensor)

无论使用哪个深度学习框架,它的张量类(在MXNet中为ndarry,在PyTorch和TensorFlow中为Tenor)都与Numpy中的ndarray类似,但又比Numpy中的ndarray多一些重要功能。

  • GPU很好的支持加速计算,而Numpy仅支持CPU计算
  • 张量类支持自动微分

如无特殊说明,本书所说的张量均指的是张量类的实例。

2.1.1 入门

首先用conda创建虚拟环境d2l

conda create --name d2l python=3.8

再利用pip下载对应的torch-GPU版本

conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch

安装anaconda时jupyter notebook默认安装在base环境中,因此新建虚拟环境后,需要在虚拟环境中也安装jupyter notebook。
首先打开anaconda promote
在base环境中输入conda list,界面如下:
在这里插入图片描述
首先我们激活虚拟环境activate pytorch_gpu,然后输入conda install nb_conda,安装好后输入jupyter notebook
进入jupyter后选择Kernel,然后再选择change kernel即可将jupyter运行环境改为虚拟环境。

首先导入torch

import torch

张量表示由一个数值组成的数组,这个数组可能有多个维度。

具有一个轴的张量对应数学上的向量(vector)。具有两个轴的张量对应数学上的矩阵(matrix)。具有两个轴以上的张量没有特殊的数学名称。
torch.arange()返回大小的一维张量在这里插入图片描述
使用arange创建一个行向量x,这个行向量包含从0开始的前12个整数,被默认创建为浮点数。

x=torch.arange(12)
x
-------------------
out:tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

张量中的每个值都被称为张量的元素(element)

通过张量的shape属性来访问张量的形状(沿每个轴的长度)

x.shape
--------
out:torch.Size([12])

通过张量的numel属性可以得到张量中元素的总数,即形状的所有元素乘积。

x.numel()
-----------
out:12

要改变一个张量的形状而不改变其元素数量和元素值,可以调用reshape函数。e.g.可以把张量x从形状(12,)的行向量转换为形状为(3,4)的矩阵。这个新的张量包含与转换前相同的值,但是它被看成一个3行4列的矩阵。

张量形状发生变化但元素值不变,大小也不变

X=x.reshape(3,4)
X
------------------------
out:tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]])

使用reshape时我们不一定要通过手动调整维度,在上面的例子中,我们也可以通过x.reshape(-1,4)x.reshape(3,-1)来取代x.reshape(3,4)

希望张量自动推断的维度放置-1来调用这一功能。

创建一个形状为(2,3,4)的张量,其中所有元素值都为0。

torch.zeros((2,3,4))
----------------------
out:tensor([[[0., 0., 0., 0.],
         [0., 0., 0., 0.],
         [0., 0., 0., 0.]],

        [[0., 0., 0., 0.],
         [0., 0., 0., 0.],
         [0., 0., 0., 0.]]])

创建一个形状为(2,3,4)的张量,其中所有元素为1。

torch.ones((2,3,4))
---------------------
out:tensor([[[1., 1., 1., 1.],
         [1., 1., 1., 1.],
         [1., 1., 1., 1.]],

        [[1., 1., 1., 1.],
         [1., 1., 1., 1.],
         [1., 1., 1., 1.]]])

创建一个形状为(3,4)的张量,其中的每个元素都从均值为0,标准差为1的标准高斯(正态)分布中随机采样。

torch.randn(3,4)
------------------
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值