pytorch每日一学14(torch.as_tensor())将其它类型转化为tensor

第14个方法

torch.as_tenso(data, dtype=None, device=None)->Tensor

  这个方法还是比较直观地,将数据转化为tensor,这些数据可以是( list, tuple, NumPy ndarray, scalar, and other types.)等等,所以这个方法还是挺有用的。
接下来介绍参数:

  • data:tensor的初始化数据。可以是 list, tuple, NumPy ndarray, scalar, and other types。
  • dtype:tensor中数据的类型,如果不指定则使用data中的数据类型。
  • device:指定了返回tensor所在的位置(cpu或者cuda),如果没有指定则使用当前默认设备,一般是cpu,当然也可以使用前面讲过的torch.set_default_tensor_type()来更改默认设置。

  • 注意 :如果data已经是一个tensor并且与返回的tensor具有相同的类型和相同的设备,那么不会发生复制,返回的tensor就是data,否则是会进行复制的并且一个新的tensor会被返回且具有requires_grad=True,并保留计算图。相似的,如果data是一个相应dtype的ndarray,并且设备是cpu(numpy中的ndarray只能存在于cpu中),那么也不会进行任何复制,但是返回的是tensor,只是使用的内存相同。
import torch
import numpy as np
a = np.array([1, 2, 3])
t = torch.as_tensor(a)
print(t)
t[0] = -1
a

pytorch每日一学14(torch.as_tensor())将其它类型转化为tensor_第1张图片

  • 由于a与t使用的是相同的内存区域,所以更改一个中的数据值,另一个也会更改。

而这样的话,由于是进行值得复制,所以改变t不会改变a

import torch
import numpy as np
a = np.array([1, 2, 3])
t = torch.as_tensor(a, dtype=torch.float32)
t[0] = -1
print(t)
a

pytorch每日一学14(torch.as_tensor())将其它类型转化为tensor_第2张图片

  • 当然将数据转化为tensor也有其它的方法,例如将numpy转为tensor也可以使用t = torch.from_numpy(a)等。

你可能感兴趣的:(pytorch每日一学,python,深度学习,pytorch,机器学习,神经网络)