【问题标题】:PyTorch - to NumPy yields unsized object?PyTorch - 到 NumPy 产生未调整大小的对象?
【发布时间】:2020-03-31 17:26:05
【问题描述】:

将 PyTorch 张量转换为 NumPy 我得到了

print(nn_result.shape)
# (2433, 2)
np_result = torch.argmax(nn_result).numpy()
type(np_result)
# <type 'numpy.ndarray'>
print(len(np_result))
TypeError: len() of unsized object

为什么?我认为根据文档,numpy() 函数会返回正确的ndarray,但它似乎不完整?

【问题讨论】:

    标签: numpy pytorch numpy-ndarray


    【解决方案1】:

    也许您想使用 torch.argmax(nn_result, dim=1) ?由于dim 默认为 0,它只返回一个构造为张量的数字。让我用下面的例子来说明:

    >>> x = np.array(1)
    >>> x.shape
    ()
    >>> len(x)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: len() of unsized object
    >>> x = np.array([1])
    >>> x.shape
    (1,)
    >>> len(x)
    1
    

    基本上np.array 将占用您构造时使用的任何object 类型。在第一种情况下,object 不是一个数组,因此您看不到有效的形状。由于它不是数组调用len 会引发错误。

    torch.argmaxdim=0 返回一个张量,如上述示例的第一种情况所示,因此会出现错误。

    【讨论】:

      猜你喜欢
      • 2018-11-16
      • 2018-04-26
      • 1970-01-01
      • 2020-08-11
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      相关资源
      最近更新 更多