学习目标:
1、张量的概念
2、张量的创建及属性
3、张量与numpy的转换
4、特殊张量CSRTensor、COOTensor`
5、学习小结
学习内容:
1、张量的概念
a. 张量(Tensor)是MindSpore网络运算中的基本数据结构。
b. 张量(Tensor)是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数。
c. 张量是一种特殊的数据结构,与数组和矩阵非常相似。
2、张量的创建及属性
2.1 张量的创建
# 根据数据直接生成
import mindspore
from mindspore import Tensor
data = [1, 0, 1, 0]
x_data = Tensor(data, dtype=mindspore.float32)
print(x_data, x_data.shape, x_data.dtype)
# 从numpy数据生成
from mindspore import Tensor
import numpy as np
np_array = np.array(data)
x_np = Tensor(np_array)
print(x_np, x_np.shape, x_np.dtype)
# 使用init初始化器构造张量
from mindspore.common.initializer import One, Normal
# Initialize a tensor with ones
tensor1 = mindspore.Tensor(shape=(2, 2), dtype=mindspore.float32, init=One())
# Initialize a tensor from normal distribution
tensor2 = mindspore.Tensor(shape=(2, 2), dtype=mindspore.float32, init=Normal())
print("tensor1:\n", tensor1)
print("tensor2:\n", tensor2)
# 继承另一个张量的属性,生成新的张量
from mindspore import ops
x_ones = ops.ones_like(x_data)
print(f"Ones Tensor: \n {x_ones} \n")
x_zeros = ops.zeros_like(x_data)
print(f"Zeros Tensor: \n {x_zeros} \n")
2.2 张量的属性
import numpy as np
x = Tensor(np.array([[1, 2], [3,4]]), dtype=mindspore.int32)
print("x_shape:", x.shape)
print("x_ndim:", x.ndim)
print("x_itemsize:", x.itemsize)
print("x_size:", x.size)
print("x_nbytes:", x.nbytes)
print("x_strides:", x.strides)
3、张量与numpy的转换
from mindspore import Tensor
import numpy as np
# Tensor转numpy: asnumpy()
t = Tensor([1., 1., 1., 1., 1.])
print(f"t: {t}", type(t))
n = t.asnumpy()
print(f"n: {n}", type(n))
# numpy转Tensor: fromTensor()
n = np.ones(5)
t = Tensor.from_numpy(n)
print(f"n: {n}", type(n))
print(f"t: {t}", type(t))```
4、特殊张量CSRTensor、COOTensor
```\
from mindspore import Tensor, CSRTensor, COOTensor
# CSRTensor
indptr = Tensor([3, 0, 2])
indices = Tensor([0, 1])
values = Tensor([1, 2], dtype=mindspore.float32)
shape = (2, 4)
csr_tensor = CSRTensor(indptr, indices, values, shape)
print(csr_tensor)
# COOTensor
indices = Tensor([[0, 1], [1, 2]], mindspore.int32)
values = Tensor([1, 2], mindspore.float32)
shape = (3, 4)
coo_tensor = COOTensor(indices, values, shape)
print(coo_tensor)
5、学习小结