[英]How convert a list with None in it to torch.tensor()?
例如,我有一个变量z = [1, 3, None, 5, 6]
我想做: torch.tensor(z)
并得到如下内容:
torch.tensor([1,3, None, 5,6], dtype=torch.float)
但是,这样的尝试会引发错误
TypeError:必须为实数,而不是NoneType
有没有办法将此类列表转换为torch.tensor
?
我不想用其他东西来推论这个None
值。 Numpy数组能够转换这样的列表np.array([1, 3, None, 5, 6])
,但是我也不希望来回转换变量。
这取决于您的工作。 最好的办法是将None
转换为0
。
将事物转换为numpy数组然后转换为Torch张量是一个很好的方法,因为它将将None
转换为np.nan
。 然后,即使持有np.nan
您也可以创建Torch张量。
import torch
import numpy as np
a = [1,3, None, 5,6]
b = np.array(a,dtype=float) # you will have np.nan from None
print(b) #[ 1. 3. nan 5. 6.]
np.nan_to_num(b, copy=False)
print(b) #[1. 3. 0. 5. 6.]
torch.tensor(b, dtype=torch.float) #tensor([1., 3., 0., 5., 6.])
也尝试在np.nan_to_num
内np.nan_to_num
copy=True
,您将在张量内得到nan
而不是0。
我感觉数据源的张量构造不允许Numpy具有允许None
类型的宽大处理 。 另请参阅此处的讨论,其中其他人询问了张量中的None类型。
看起来您将不得不考虑如何通过归因或其他形式的数据清除来处理丢失的数据。
或者您可能需要张量形状 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.