类型错误:无法转换 numpy.object_ 类型的 np.ndarray

Whi*_*sht 6 numpy pytorch

如何将 numpy ndarry 转换为火炬张量?

这是我的数据:

array([array([-0.4287  , -1.193   , -2.156   , -0.2264  , -1.978   , -1.101   ,   -3.395   ,  0.2974  ], dtype=float16),
   array([-0.3386 ,  1.398  , -1.083  ,  0.2961 , -0.7354 , -1.326  , -4.33   ,  0.6284 ], dtype=float16)], 
   dtype=object)
Run Code Online (Sandbox Code Playgroud)

小智 9

只是添加上面写的内容:

首先,您应该确保您的数组数据类型不是“O”(对象)。

您可以通过以下方式做到这一点:(信用

a=np.vstack(a).astype(np.float)
Run Code Online (Sandbox Code Playgroud)

然后你可以使用:

b = torch.from_numpy(a)
Run Code Online (Sandbox Code Playgroud)


mrz*_*rzo 7

很难正确回答,因为您没有向我们展示您如何尝试做到这一点。从您的错误消息中,我可以看到您尝试将包含对象的 numpy 数组转换为火炬张量。这不起作用,您将需要数字数据类型:

import torch
import numpy as np

# Your test array without 'dtype=object'
a = np.array([
   np.array([-0.4287  , -1.193   , -2.156   , -0.2264  , -1.978   , -1.101   ,   -3.395   ,  0.2974  ], dtype=np.float16),
   np.array([-0.3386 ,  1.398  , -1.083  ,  0.2961 , -0.7354 , -1.326  , -4.33   ,  0.6284 ], dtype=np.float16)
])

print(a.dtype) # This should not be 'object'

b = torch.from_numpy(a)

print(b)
Run Code Online (Sandbox Code Playgroud)

输出

float16
tensor([[-0.4287, -1.1934, -2.1562, -0.2264, -1.9775, -1.1006, -3.3945,  0.2974],
        [-0.3386,  1.3984, -1.0830,  0.2961, -0.7354, -1.3262, -4.3281,  0.6284]],
       dtype=torch.float16)
Run Code Online (Sandbox Code Playgroud)