1.课前准备
- 安装Anaconda(自带Jupyter notebook)与python,并安装numpy(安装了Anaconda后无需担心,用CPU运行,CPU版本的matelable)与pytorch(GPU版本的numpy 既能CPU又能GPU)
- 安装编辑器Pycharm
2.张量的基础概念
张量阶数 | 例子 | |
---|---|---|
标量(没有分量) | 0 | 能量、温度、一门课的总成绩 |
向量 | 1 | 速度、力、多门课的总成绩构成的数列 |
矩阵 | 2 | 算符的系数矩阵、黑白图片 |
张量 | N | 彩色图片(三阶张量) |
- N维张量又称N维数列
- 张量阶数即为张量指标的个数
- 向量、矩阵也被称为1阶张量、2阶张量
- 每个指标可取的值的个数,被称为指标的维数
- 张量的“直观”定义:多个指标标记下的一堆数
2.1 代码实例
向量:
v = np.random.randn(4,) #生成长度为4的随机向量 randn为高斯分布
print(v)
print(v.shape) #v的形状
print(v.size) #v中包含的元素的个数
print(v.dot(v)) #v和v的内积 v.T表示v的转置
v[1] = 10.21 #修改v的某个元素
矩阵:
m = np.random.randn(2,2) + np.random.randn(2,2) * 1j # 生成2*2的随机复矩阵
print(m.conj()) # 求矩阵共轭
print(m.conj().T) # 求矩阵共轭转置
print(np.eye(2)) #打印单位阵
print(np.zeros((2,4))) #打印全零矩阵
张量:
x = np.random.randn(2,2,2) #随机生成一个2*2*2的三阶张量
print(x.ndim) #张量的阶数
print(np.ones((2,3,2))) #生成全1的三阶张量
3.张量的图形表示
——张量用连接着N个腿(bond)的圆圈或方块表示,N为张量的阶数
注:一个腿表示一个指标
4.张量的基本操作
- 切片——提取相关元素
- transpose命令——改变张量指标的顺序
- reshape命令——张量的阶数可以进行相互的转换(改变张量的形状)
注:使用transpose命令和reshape命令转换张量前后,其所包含的元素总个数不变,意义仅在于采用不同的index标记各个元素(改变的只是表示方式,值没有改变)
4.1 代码实例
向量切片:
v = np.arange(6) #输出[0 1 2 3 4 5 ]
print(v[:3]) #输出[0 1 2]
张量切片:
x = np.random.randn(4,4,4