You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

numpy数组转PyTorch时出现numpy.object_类型不支持错误如何解决

问题根因
  1. 核心报错原因:传入torch.from_numpy()的inputs_array是dtype为numpy.object_的numpy数组,PyTorch的from_numpy方法仅支持固定长度的数值/布尔类型numpy数组转换,不支持object类型。object类型数组一般是因为数组内存储的元素类型不统一(比如混了字符串、数字、空值、不等长序列),numpy无法识别为统一数值类型才会标记为object。
  2. 代码本身存在语法错误:inputs = torch.from_numpy(inputs_array),float()这行的,float()写在了函数括号外面,实际执行后会生成一个包含两个元素的元组,完全没有实现张量类型转换的逻辑。
解决步骤
  • 先校验数组类型:执行print(inputs_array.dtype)确认类型,若输出为object先处理数组内容:
    • 排查数组内是否存在非数值内容(比如字符串、空值、异常值),清理或编码为数值;
    • 如果数组内是不等长序列(比如文本序列、不同长度的时间序列),先做padding对齐成统一长度,保证所有元素维度一致。
  • 将处理后的numpy数组显式转换为PyTorch支持的数值类型,推荐优先转成模型训练常用的float32:
    inputs_array = inputs_array.astype("float32")
    
  • 修正代码语法错误,选择以下任意一种正确写法完成转换:
    写法1(numpy侧完成类型转换,转换后的tensor和原numpy数组共享内存,效率更高):
    inputs = torch.from_numpy(inputs_array)
    
    写法2(先转tensor再调整浮点类型):
    inputs = torch.from_numpy(inputs_array).float()
    

注意:如果object数组内存储的是纯字符串类非数值内容,不能直接astype转数值,需要先通过词嵌入、编码等方式把内容映射为数值后再做转换。

内容的提问来源于stack exchange,提问作者Laiba Riaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:21:34