为了账号安全,请及时绑定邮箱和手机立即绑定

无法将列表转换为数组:ValueError:只有一个元素张量可以转换为 Python 标量

无法将列表转换为数组:ValueError:只有一个元素张量可以转换为 Python 标量

蝴蝶不菲 2021-06-02 14:45:12
我目前正在使用 PyTorch 框架并试图理解外国代码。我遇到了索引问题,想打印列表的形状。这样做的唯一方法(据 Google 告诉我)是将列表转换为 numpy 数组,然后使用 numpy.ndarray.shape() 获取形状。但是尝试将我的列表转换为数组时,我得到了一个ValueError: only one element tensors can be converted to Python scalars.我的列表是一个转换后的 PyTorch Tensor ( list(pytorchTensor)),看起来有点像这样:[张量([[-0.2781, -0.2567, -0.2353, ..., -0.9640, -0.9855, -1.0069],[-0.2781, -0.2567, -0.2353, ..., -1.0069, -1.02083] ],[-0.2567, -0.2567, -0.2138, ..., -1.0712, -1.1141, -1.1784],...,[-0.6640, -0.6425, -0.6211, ..., -1.0712, -1.11114] -1.0927],[-0.6640, -0.6425, -0.5997, ..., -0.9426, -0.9640, -0.9640],[-0.6640, -0.6425, -0.5997, ..., -0.9640, -0.9640, -26, -26 ]]), 张量([[-0.0769, -0.0980, -0.076 9, ..., -0.9388, -0.9598, -0.9808],[-0.0559, -0.0769, -0.0980, ..., -0.9598 1.0018, -1.0228],[-0.0559, -0.0769, -0.0769, ..., -1.0228, -1.0439, -1.0859],...,[-0.4973,-0.4973,-0.4973,...,-1.0018,-1.0439,-1.0228],[-0.4973,-0.4973,-0.4973,...,-0.8757,-0.9177,-0.9177],[ - 0.4973, -0.4973, -0.4973, ..., -0.9177, -0.8967, -0.8967]]), 张量([[-0.1313, -0.1313, -0.110 0, ..., -0.8115, -8,0.3. ],[-0.1313, -0.1525, -0.1313, ..., -0.8541, -0.8966, -0.9391],[-0.1100, -0.1313, -0.1100, ..., -0.9391, -, -0.9816]...,[-0.4502, -0.4714, -0.4502, ..., -0.8966, -0.8966, -0.8966],[-0.4502, -0.4714, -0.4502, ..., -0.8115, -0.81709,3 ],[-0.4502, -0.4714, -0.4502, ..., -0.8115, -0.7690, -0.7690]])]有没有办法在不将其转换为 numpy 数组的情况下获取该列表的形状?
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

看起来你有一个张量列表。对于每个张量,您都可以看到它size()(无需转换为列表/numpy)。如果您坚持,您可以使用numpy()以下方法将张量转换为 numpy 数组:

返回张量形状列表:

>> [t.size() for t in my_list_of_tensors]

返回一个 numpy 数组列表:

>> [t.numpy() for t in my_list_of_tensors]

在性能方面,最好避免将张量转换为 numpy 数组,因为它可能会导致设备/主机内存同步。如果您只需要检查shape张量的 ,请使用size()函数。


查看完整回答
反对 回复 2021-06-06
?
RISEBY

TA贡献1856条经验 获得超5个赞

将 pytorch 张量转换为 numpy 数组的最简单方法是:


nparray = tensor.numpy()

此外,对于尺寸和形状:


tensor_size = tensor.size()

tensor_shape = tensor.shape()

tensor_size

>>> (1080)

tensor_shape

>>> (32, 3, 128, 128)


查看完整回答
反对 回复 2021-06-06
  • 2 回答
  • 0 关注
  • 345 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信