TypeError:ufunc' invert'输入类型不支持,

时间:2017-05-18 07:19:28

标签: tensorflow python-3.5 unet

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

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

我在第3行收到错误说:

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

如何调试?

2 个答案:

答案 0 :(得分:1)

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

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

  1. _load_data_and_label:准备所有数据
  2. _next_data:加载数据(作为np.float32)和(重要)加载标签np.bool
  3. _load_file:请检查生成的数组是否真的是np.bool
  4. E.g:

    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)
    

答案 1 :(得分:0)

听起来这可能与Theano问题跟踪器here中的问题相同。

  

错误来自于numpy,而且是因为你混合了符号(Theano)和数字(scipy)代码。这不起作用。

     

如果你想在theano中使用一个scipy函数,你必须把它作为一个op包装起来(也许用@as_op http://deeplearning.net/software/theano/library/compile/ops.html#theano.compile.ops.as_op)。