【发布时间】:2018-07-25 03:12:08
【问题描述】:
我正在尝试使用下面的代码使用 numpy 数组计算 F1_Score
ypred = np.squeeze(imgs_mask_predict[jj,:,:,:])
ytrue = np.squeeze(imgs_test_mask[jj,:,:,:])
def f1_score_single(y_true, y_pred):
y_true = y_true.flatten('F')
y_pred = y_pred.flatten('F')
cross_size = len(y_true & y_pred)
if cross_size == 0: return 0.
p = 1. * cross_size / len(y_pred)
r = 1. * cross_size / len(y_true)
return (2. * (p * r) / (p + r))
我收到一个错误
“输入类型不支持 ufunc 'bitwise_and',并且根据强制转换规则 ''safe'' 无法安全地将输入强制转换为任何支持的类型”在这行代码中
cross_size = len(y_true & y_pred)
我试图搜索这个错误,但没有得到这个错误的原因和解决方案。我应该如何解决这个问题?
【问题讨论】:
-
y_true.dtype和y_pred.dtype是什么? -
y_true type
y_pred type y_true shape (256, 160) y_pred shape (256, 160) -
看起来像
type(y_true)和y_true.shape。现在向我们展示y_true.dtype和y_pred.dtype。dtype属性告诉你numpy数组中数据的数据类型。 -
dtype 是 float32
-
啊。为什么要尝试将
&运算符(对于 numpy 数组是按位与)与浮点值一起使用?该运算符仅对整数值有意义(对于“意义”的某些定义)。
标签: python-3.x numpy deep-learning bitwise-and