# 基本数据类型

# 基本数据类型

image

# 常用类型

  • FloatTensor
  • DoubleTensor
  • ByteTensor
  • IntTensor
  • LongTensor

# 标量

image

image

常用来表示 Loss

# 一维张量

image

image​​

有三种方式:

  • 给定内容生成一维张量
  • 给定维度大小生成一维张量
  • 从 np 中得到一维张量

常用于 Bias 神经元的偏置,和 Linear Input

# 二维张量

dim、size () 和 shape 的区分。对于一个维度为 [2, 2] 这样的张量,它的:

  • dim 为 2,也就是数学上的 Rank,秩;
  • size () 和 shape 则返回这个张量的形状,size () 是方法,shape 是属性;

image

常用来表示带有 Batch 的 Linear Input,例如 [4, 784]

# 三维张量

image

常用来表示带有 Batch 的 RNN Input,例如 [10, 20, 100],表示一句话有 10 个单词 W,我们送入 20 句话进行训练 Sentence,每个单词用个 100 长度的一维向量表示

# 四维张量

image

常用来表示 CNN,例如 [b, c, h, w]

# 获取张量的大小

用 numel 方法,即 num of element

image

# 创建 Tensor

# 创建 Tensor

用 torch.FloatTensor 创建 Tensor:

  • 当接收到一个 List,则根据现有数据创建 Tensor
  • 当接收到不是 List,则根据维度创建 Tensor

image

# 创建未初始化的 Tensor

  • Torch.empty()
  • Torch.FloatTensor(d1, d2, d3)
  • Torch.IntTensor(d1, d2, d3)

NOT torch.FloatTensor([1, 2]) = torch.tensor([1, 2])

未初始化的数据会有很多极端值,如下,所以记得跟上后续步骤将数据覆盖掉

image

PyTorch 如果没有手动配置,默认会生成 FloatTensor

可以使用 torch.set_default_tensor_type(torch.DoubleTensor) ​ 设置其他类型

image

# 创建均匀分布的 Tensor

  • rand

    • 随机从 [0, 1] 分布中生成数据
  • rand_like

    • 接收一个 tensor,读取 tensor 的 shape,再送到 rand 函数
  • randint

    • 四个参数,例如 randint (1, 10, 3, 3),生成 [1, 10) 范围内的 3 x 3 的张量

均匀采用 0 ~ 10 的 Tensor,要用 x = 10 * torch.rand (d1, d2),randint 只能采样整数

image

# 创建正态分布的