🤡博客主页:Code_文晓
🥰本文专栏:PyTorch基础
😻欢迎关注:感谢大家的点赞评论+关注,祝您学有所成!
本专栏所有代码都是在JupyterNotebook上写的,可以直接运行使用。
目录
1.张量转换为numpy数组
2.numpy转换为张量
3.提取单个元素的张量
注意:以下所有代码最开始都需要导入这三行语句,后面不在重复导入。
import torchimport numpy as npimport random
1.张量转换为numpy数组
张量可以通过 张量.numpy()方法转化为numpy的ndarray数组;转换后的numpy数组和原来的张量共享内存空间.
# 1.张量转换为numpy数组 张量.numpy()data_tensor=torch.tensor([66,88,99])data_numpy=data_tensor.numpy()print(type(data_tensor)) #print(type(data_numpy)) #
## 1.1 测试张量和numpy数组共享内存 更改data_numpy里面的数据data_numpy[0]=222print(data_numpy) #[222 88 99]#data_tensor的数据也随之更改print(data_tensor) #tensor([222, 88, 99])
## 1.2 使用copy()函数可以不共享内存data_tensor=torch.tensor([66,88,99])data_numpy=data_tensor.numpy().copy()data_numpy[0]=222print(data_numpy) #[222 88 99]#data_tensor的数据并未改变print(data_tensor) #tensor([66, 88, 99])
2.numpy转换为张量
2.1使用torch.form_numpy(),可以将ndarray数组转换为Tensor张量,默认共享内存,可以使用numpy的copy()函数避免共享内存。
2.2使用torch.tensor可以将ndarray数组转换为Tensor张量,默认不共享内存。
# 2.1 torch.from_numpy()将nump数组转换为tensor张量data_numpy=np.array([11,22,33])data_tensor=torch.from_numpy(data_numpy)print(type(data_numpy))print(type(data_tensor))## 测试共享内存data_numpy[0]=999print(data_numpy)print(data_tensor)## 使用numpy.copy()避免共享内存data_numpy=np.array([11,22,33])data_tensor=torch.from_numpy(data_numpy.copy())data_numpy[0]=999print(data_numpy)print(data_tensor)
# 2.2 torch.tensor() 将nump数组转换为tensor张量data_numpy=np.array([11,22,33])data_tensor=torch.tensor(data_numpy)print(type(data_numpy))print(type(data_tensor))## 2.1 测试torch.tensor()是否共享内存(不共享)data_numpy[0]=999print(data_numpy)print(data_tensor)
3.提取单个元素的张量
对于只有一个元素的张量,使用item方法将该值从张量中提取出来。
t1=torch.tensor(30) # 标量t2=torch.tensor([30]) # 一维张量t3=torch.tensor([[30]]) # 二维张量print(t1.shape)print(t2.shape)print(t3.shape)## 单个元素的张量.item()方法可以将单个元素提取出来print(t1.item())print(t2.item())print(t3.item())## 注意:张量中只有一个元素,如果有多个元素的话,使用item函数可能就会报错# t4=torch.tensor([30,40])# print(t4.item())# ValueError: only one element tensors can be converted to Python scalars