首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法转换np.ndarray类型的numpy.bool_

无法转换np.ndarray类型的numpy.bool_
EN

Stack Overflow用户
提问于 2019-05-18 23:09:02
回答 2查看 8.5K关注 0票数 2

我想知道为什么当我使用:

代码语言:javascript
复制
Y_train_class = torch.tensor(Y_train_class.values)

TypeError:不能转换numpy.bool_类型的np.ndarray。唯一受支持的类型是: double、float、float16、int64、int32和uint8。

我试图将我的数据转换为浮动,但似乎失败了。

代码语言:javascript
复制
X_train = pd.read_csv('c:/Data/x_train_set_yu.csv', header= None)
Y_train = pd.read_csv('c:/Data/y_train_set_yu.1.csv', header= None)

Y_train_class = (Y_train >= 550)
print (Y_train_class)
X_test = pd.read_csv('c:/Data/X_test.csv',header= None)

X_train = torch.tensor(X_train.values)

Y_train.astype(np.float32)
Y_train_class.astype(np.float32)

Y_train_class = torch.tensor(Y_train_class.values)

TypeError:不能转换numpy.bool_类型的np.ndarray。唯一受支持的类型是: double、float、float16、int64、int32和uint8。

EN

Stack Overflow用户

发布于 2019-05-19 19:31:05

您通常遵循正确的方法,除非numpy astype不合适。所以而不是

代码语言:javascript
复制
Y_train_class.astype(np.float32)

你需要有

代码语言:javascript
复制
Y_train_class = Y_train_class.astype(np.float32)

(目前,您的原始Y_train_class.astype(np.float32)实际上无法执行)。

如果您的目标是使用丢失函数(如nn.BinaryCrossEntropy )进行训练,那么您的浮点转换方法是正确的,因为他们期望0/1类无论如何都是float32。在一般情况下,PyTorch使用uint8张量来代替布尔张量,因此要获得与原始numpy张量相当的功能,您应该使用torch.from_numpy(Y_train_class.astype(np.uint8)) -然后它正确地支持掩蔽操作,如下面的示例

代码语言:javascript
复制
import torch
import numpy as np

test_vals = np.array([1, 3, 3])
array = np.array([True, True, False], dtype=np.bool)
print(test_vals[array])

test_vals = torch.from_numpy(test_vals)
tensor = torch.from_numpy(array.astype(np.uint8))
print(test_vals[tensor])

最后,据我所知,布尔张量将在未来的版本中进入PyTorch。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56203536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档