学习神经网络的时候经常被一个概念混淆,今天终于算是进一步理解。记录一下。
无论是在python里的numpy,还是各种框架里的tensor,
数组就是一个数组而已,不等同于行向量或者列向量。
但是它有转化成行/列向量的潜质(通过特定函数如unsqueeze增加维度)。
举个例子
import torch
x1 = torch.Tensor([1, 2, 3, 4, 5])
x2 = torch.unsqueeze(x1, dim=1)
# 打印x1,x2的size
print(x1.size()) # torch.Size([5])
print(x2.size()) # torch.Size([5, 1])
需要理解, (5) != (5, 1) != (1, 5)
补充
用numpy补充说明:
import numpy as np
A = np.array([1, 2, 3])
B = np.array([[1, 2, 3]])
C = np.array([[1], [2], [3]])
print(A) # [1 2 3]
print(A.shape) # (3,)
print(B) # [[1 2 3]]
print(B.shape) # (1, 3)
print(C)
# [[1]
# [2]
# [3]]
print(C.shape) # (3, 1)
特别注意⚠️
- [1, 2, 3] != [[1, 2, 3]]
前者是数组/序列,后者是1X3的矩阵/向量。

本文深入探讨了在Python的NumPy库和各种框架中的张量概念,解释了数组、行向量和列向量之间的区别,并通过实例展示了如何使用unsqueeze等函数将一维数组转换为特定形状的矩阵。
1519

被折叠的 条评论
为什么被折叠?



