Python TypeError:div():参数';其他';(位置1)必须是张量,而不是numpy.bool_

Python TypeError:div():参数';其他';(位置1)必须是张量,而不是numpy.bool_,python,numpy,tensorflow,tensor,Python,Numpy,Tensorflow,Tensor,我正在尝试一个模型,ODE网络,在医学图像上获得一些分割结果。 在进行实验时,出现了以下错误: TypeError:div():参数'other'(位置1)必须是张量,而不是numpy.bool\u 错误显示在代码下面部分的最后一行中: def应用数据增强(自我、图像、掩码): patch=torch.from_numpy(image.transpose(2,0,1)).float()/255 n_压盖=mask.max() label=火炬。从(遮罩)。浮动()/n_压盖 遮罩是图像的基本真相

我正在尝试一个模型,ODE网络,在医学图像上获得一些分割结果。 在进行实验时,出现了以下错误:
TypeError:div():参数'other'(位置1)必须是张量,而不是numpy.bool\u
错误显示在代码下面部分的最后一行中:

def应用数据增强(自我、图像、掩码):
patch=torch.from_numpy(image.transpose(2,0,1)).float()/255
n_压盖=mask.max()
label=火炬。从(遮罩)。浮动()/n_压盖

遮罩
是图像的基本真相

在上述部分前面加上:

def __getitem__(self, index):
    image, mask = self.index_to_filename(index)
    image, mask = self.open_and_resize(image, mask)
    image, mask = self.pad_image(image, mask)
    label, patch = self.apply_data_augmentation(image, mask)
    label = self.create_eroded_mask(label, mask)
    patch, label = self.extract_random_region(image, patch, label)
    return patch, label.float()

def index_to_filename(self, index):
    """Helper function to retrieve filenames from index"""
    index_img = index // self.repeat
    index_img = self.images[index_img]
    index_str = str(index_img.item() + 1)

    image = self.image_fname + index_str + '.jpg'
    mask = self.image_fname + index_str + '_anno.png'
    return image, mask

def open_and_resize(self, image, mask):
    """Helper function to pad smaller image to the correct size"""
    image = PIL.Image.open(image)
    mask = PIL.Image.open(mask)

    ratio = (775 / 512)
    new_size = (int(round(image.size[0] / ratio)),
                int(round(image.size[1] / ratio)))

    image = image.resize(new_size)
    mask = mask.resize(new_size)

    image = np.array(image)
    mask = np.array(mask)
    return image, mask

def pad_image(self, image, mask):
    """Helper function to pad smaller image to the correct size"""
    if not self.validation:
        pad_h = max(self.patch_size[0] - image.shape[0], 128)
        pad_w = max(self.patch_size[1] - image.shape[1], 128)
    else:
        # we pad more than needed to later do translation augmentation
        pad_h = max((self.patch_size[0] - image.shape[0]) // 2 + 1, 0)
        pad_w = max((self.patch_size[1] - image.shape[1]) // 2 + 1, 0)

    padded_image = np.pad(image, ((pad_h, pad_h), (pad_w, pad_w), (0, 0)), mode='reflect')
    mask = np.pad(mask, ((pad_h, pad_h), (pad_w, pad_w)), mode='reflect')
    return padded_image, mask
我们将非常感谢在这方面提供的任何帮助;提前谢谢


PS:我正在谷歌Colab上尝试代码

初始化掩码后添加此行

mask=np.array(mask,dtype='float')
方法
torch.from_numpy
需要类型为
float
np.float
的对象,因为torch中的每个张量都是
torch.FloatTensor

有几种方法可以绕过它。一种方法是使用
np.array
dtype='float'

将布尔数组转换为float,或者
声明一个空的
torch.BoolTensor
,然后使用\u numpy中的方法

PS
np.array
为加载的图像选择合适的数据类型。对于
bool
图像
np.bool

初始化掩码后添加此行

mask=np.array(mask,dtype='float')
方法
torch.from_numpy
需要类型为
float
np.float
的对象,因为torch中的每个张量都是
torch.FloatTensor

有几种方法可以绕过它。一种方法是使用
np.array
dtype='float'

将布尔数组转换为float,或者
声明一个空的
torch.BoolTensor
,然后使用\u numpy
中的方法

PS
np.array
为加载的图像选择合适的数据类型。对于
bool
图像
np.bool

这是你自己的代码吗?如果是,目的是什么?什么是
掩码
?这是一个带有
boolean
dtype的numpy数组吗?如果是这样,
max
将只是
True/False
,而不是某种计数。用布尔值除是没有意义的,是吗?@hpaulj不,先生!那不是我自己的代码。我已经在他们测试的数据上复制了使用代码的结果。现在,我想在这类不同的数据上尝试一下。@hpaulj先生,
mask
是图像的基本事实,在这段代码之上,它被定义为:
pad\u h=max((self.patch\u size[0]-image.shape[0])//2+1,0)
pad\u=max((self patch\u size[1]-image.shape[1])//2+1,0)
padded_image=np.pad(image,((pad_h,pad_h),(pad_w,pad_w),(0,0)),mode='reflect')
mask=np.pad(mask,((pad_h,pad_h),(pad_w,pad_w)),mode='reflect')
注释中的代码很难读。@hpaulj抱歉,先生!我已将代码包括在问题中。先生,请检查一下。这是您自己的密码吗?如果是,目的是什么?什么是
掩码
?这是一个带有
boolean
dtype的numpy数组吗?如果是这样,
max
将只是
True/False
,而不是某种计数。用布尔值除是没有意义的,是吗?@hpaulj不,先生!那不是我自己的代码。我已经在他们测试的数据上复制了使用代码的结果。现在,我想在这类不同的数据上尝试一下。@hpaulj先生,
mask
是图像的基本事实,在这段代码之上,它被定义为:
pad\u h=max((self.patch\u size[0]-image.shape[0])//2+1,0)
pad\u=max((self patch\u size[1]-image.shape[1])//2+1,0)
padded_image=np.pad(image,((pad_h,pad_h),(pad_w,pad_w),(0,0)),mode='reflect')
mask=np.pad(mask,((pad_h,pad_h),(pad_w,pad_w)),mode='reflect')
注释中的代码很难读。@hpaulj抱歉,先生!我已将代码包括在问题中。先生,请在那儿查一下。