踩坑历险记:can‘t convert np.ndarray of type numpy.object_.

文章目录

  • 问题记录
  • 解决方法
  • 方法一:蠢方法
  • 方法二:还可以的方法
  • 参考文献
  • 问题记录

    我有一个numpy.ndarray类型的数组,数组里面的数据是tensor类型,现在我想将这个数组转化为tensor类型,然后报错了,代码和报错截图如下:
    代码及代码运行截图

    import numpy as np
    import torch
    
    a = torch.tensor([1, 1, 1])
    b = torch.tensor([2, 2, 2])
    c = np.array([a, b])
    print("print the c: \n {}\n".format(c))
    print("c's type is {}".format(type(c)))
    
    d = torch.tensor(c)
    print("print the d: \n {}\n".format(d))
    print("d's type is {}".format(type(d)))
    

    代码
    报错截图
    报错截图
    错误原因解释:就是numpy数据类型里只有float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, bool,没有tensor类型,所以出错了。一般而言,只要对数组里的数据进行强制转换,转换为float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint8, bool中的任意一种都行,可以参考这篇文章 异常can’t convert np.ndarray of type numpy.object_.。但不适用我们这次的问题。

    解决方法

    如果有大神晓得其他方法,并且能在评论区告诉我的话,那就真的感激不尽啦!

    方法一:蠢方法

    用了蠢方法,先遍历将numpy.ndarray数组里的元素全部转换为numpy.ndarray类型,也就是我将数组里的tensor类型数据转换为了numpy.ndarray类型,然后再使用torch.tensor命令进行转换,嗯,然后就成功了。
    代码及代码运行截图

    import numpy as np
    import torch
    
    a = torch.tensor([1, 1, 1])
    b = torch.tensor([2, 2, 2])
    c = np.array([a, b])
    print("print the c: \n {}\n".format(c))
    print("c's type is {}".format(type(c)))
    
    c = [val.numpy() for val in c]  #  改动在这里,将tensor转换为了numpy
    d = torch.tensor(c)
    print("print the d: \n {}\n".format(d))
    print("d's type is {}".format(type(d)))
    

    代码

    方法二:还可以的方法

    先将numpy.ndarray数组转换为list类型,再使用torch.stack命令进行转换,嗯,然后也成功了。
    代码及代码运行截图

    import numpy as np
    import torch
    
    a = torch.tensor([1, 1, 1])
    b = torch.tensor([2, 2, 2])
    c = np.array([a, b])
    print("print the c: \n {}\n".format(c))
    print("c's type is {}".format(type(c)))
    
    d = torch.stack(list(c))   # 在这里改动了
    print("print the d: \n {}\n".format(d))
    print("d's type is {}".format(type(d)))
    

    代码运行截图

    参考文献

    1. 异常can’t convert np.ndarray of type numpy.object_.

    来源:one_four_zero

    物联沃分享整理
    物联沃-IOTWORD物联网 » 踩坑历险记:can‘t convert np.ndarray of type numpy.object_.

    发表评论