如何在Pytorch中将火炬张量转换为numpy数组列表?

问题描述 投票:1回答:1

我有一个类似于Torch.Size([32,3,64,64])的割炬张量。

我正在尝试将张量转换为可以传递这些断言的东西:

assert(type(images) == list)
assert(type(images[0]) == np.ndarray)
assert(len(images[0].shape) == 3)
assert(np.max(images[0]) > 10)
assert(np.min(images[0]) >= 0.0)

我目前正在执行此操作以转换张量:

# turn tensor into list of lists
imgs = imgs.tolist()

# iterate over list and turn each image into a numpy array with normalized values
for idx, img in enumerate(imgs):
  img = cv2.normalize(np.array(img), None,
  alpha = 0, beta = 255, norm_type = cv2.NORM_MINMAX )

我收到此错误:

File "scripts/run_model.py", line 158, in get_inception_score
assert(type(images[0]) == np.ndarray)
AssertionError

如何正确转换张量,以便type(images)是一个列表,而type(images [0]是np.ndarray)?任何帮助将不胜感激。预先谢谢你。

python arrays numpy pytorch torchvision
1个回答
0
投票

首先使用tensor.numpy()将Pytorch张量转换为numpy数组,然后使用内置的list()方法将其转换为列表。

images = torch.randn(32,3,64,64)
numpy_imgs = images.numpy()
list_imgs = list(numpy_imgs)
print(type(images))
print(type(numpy_imgs))
print(type(list_imgs))
print(type(list_imgs[0]))

class'torch.Tensor'

类'numpy.ndarray'

class'list'

类'numpy.ndarray'

© www.soinside.com 2019 - 2024. All rights reserved.