通过list生成
tensor生成及存储方式
# 张量生成从pyhton中的list生成
x = torch.tensor([1, 2, 3])
print(x)
print(x.dtype)
# 半精度
x = torch.tensor([1, 2, 3]).to(torch.float16)
print(x.dtype)
# 全精度
x = torch.tensor([1, 2, 3]).to(torch.float32)
print(x.dtype)
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
print(x)
# 底层存储方式
print(x.untyped_storage())
CPU与GPU
硬件存储
# 两种储存方式 gpu和cpu
# 张量相加需要在同一个硬件上
x = torch.tensor([1, 2, 3])
y = torch.tensor([3, 4, 6])
# print(x)
# x = x.to('cuda')
# x = x.to('cpu')
# z = y + x
# print(z)
# 即使有多块GPU,要进行相加,也要在同一块GPU上运行
x = x.to('cuda:0')
y = y.to('cuda:0')
z = x + y
print(z)
tensor有梯度求导(机器学习)
numpy与tensor
# 和numpy数组进行转换
arr = np.zeros(3)
tensor = torch.from_numpy(arr)
# print(arr)
# print(tensor)
np.add(arr,1,out=arr)#给arr加1,tensor也会改变
#因为他们指向的是同一个内存
print(arr)
print(tensor)
#使用拷贝,中断关联
tensor = torch.zeros(3)
#拷贝只后内存独立
arr = tensor.clone().numpy()
print("before adding 1")
print(arr)
print(tensor)
#进行+1操作
tensor.add_(1)
print("after adding 1")
print(arr)
print(tensor)
#numpy只有数值运算(比较丰富)
#tensor有梯度求导(机器学习)