0

我已经用 tensorflow 克隆了 U-net 的存储库。

        labels = np.zeros((ny, nx, self.n_class), dtype=np.float32)
        labels[..., 1] = label
        labels[..., 0] = ~label

我在第 3 行收到错误消息:

TypeError:输入类型不支持 ufunc ' invert ',并且根据强制转换规则''安全'' ,输入无法安全地强制转换为任何支持的类型

我该如何调试?

4

2 回答 2

1

invert函数只能应用于 np.bool 数组。

根据 U-net repo 调用层次结构是这样的:

  1. _load_data_and_label:准备所有数据
  2. _next_data:加载数据(如 np.float32)和(重要)加载标签为np.bool
  3. _load_file:请检查结果数组是否真的是np.bool.

例如:

def _load_file(self, path, dtype=np.float32):
    img = Image.open(path)
    img = np.array(img, dtype=np.float32)
    img = cv2.copyMakeBorder(img, top=self.border, bottom=self.border, left=self.border, right=self.border, borderType=cv2.BORDER_CONSTANT, value=[0, 0, 0])
    return np.array(img, dtype)
于 2018-06-18T13:29:12.503 回答
0

听起来这可能与此处Theano的问题跟踪器中可以找到的问题相同。

该错误来自 numpy 并且是因为您混合了符号(Theano)和数字(scipy)代码。这行不通。

如果您想在 theano 中使用 scipy 函数,则必须将其包装为操作(可能与 @as_op http://deeplearning.net/software/theano/library/compile/ops.html#theano.compile.ops 一起使用。 as_op)。

于 2017-08-24T10:55:16.207 回答