小编Far*_*han的帖子

有没有办法在决策树的每个叶子下面获取样本?

我使用数据集训练了决策树.现在我想看看哪些样本落在树的哪个叶子下面.

从这里我想要红色圆圈样本.

在此输入图像描述

我正在使用Python的Sklearn的决策树实现.

python machine-learning decision-tree scikit-learn

8
推荐指数
1
解决办法
2357
查看次数

如何从COCO数据集中创建蒙版图像?

所以我一直在使用这段代码。我正在尝试从COCO数据集中生成图像的原始蒙版。

dataDir='G:'
dataType='train2014'
annFile='{}/annotations/instances_{}.json'.format(dataDir,dataType)


coco=COCO(annFile)
annFile = '{}/annotations/person_keypoints_{}.json'.format(dataDir,dataType)
coco_kps=COCO(annFile)


catIds = coco.getCatIds(catNms=['person'])
imgIds = coco.getImgIds(catIds=catIds );
imgIds = coco.getImgIds(imgIds = imgIds[0])
img = coco.loadImgs(imgIds[np.random.randint(0,len(imgIds))])[0]
I = io.imread('G:/train2014/'+img['file_name'])

plt.imshow(I); plt.axis('off')
annIds = coco.getAnnIds(imgIds=img['id'], catIds=catIds, iscrowd=None)
anns = coco.loadAnns(annIds)
coco.showAnns(anns)
Run Code Online (Sandbox Code Playgroud)

但是我得到的是这样的东西

在此处输入图片说明

但是我想要的是这样的

在此处输入图片说明

如何获得针对每个图像的原始蒙版?

python image-processing computer-vision image-segmentation tensorflow

5
推荐指数
3
解决办法
3987
查看次数

如何从分割掩码中找到 IoU?

我正在执行图像分割任务,并且我使用的数据集只有基本事实但没有边界框或多边形。

我有 2 个类(忽略 0 作为背景)并且输出和地面实况标签在一个数组中

预测---/---标签

0|0|0|1|2 0|0|0|1|2 0|2|1|0|0 0|2|1|0|0 0|0|1|1|1 0|0|1|1|1 0|0|0|0|1 0|0|0|0|1

我如何从这些计算 IoU?

PS:我使用 python3 和 pytorch api

python image-segmentation pytorch

5
推荐指数
1
解决办法
5755
查看次数

用于pytorch中图像分割的通道明智的CrossEntropyLoss

我正在做一个图像分割任务。总共有 7 个类,所以最终输出是一个像 [batch, 7, height, width] 这样的张量,它是一个 softmax 输出。现在直觉上我想使用 CrossEntropy 损失,但 pytorch 实现不适用于通道明智的单热编码向量

所以我打算自己做一个功能。在一些 stackoverflow 的帮助下,我的代码到目前为止看起来像这样

from torch.autograd import Variable
import torch
import torch.nn.functional as F


def cross_entropy2d(input, target, weight=None, size_average=True):
    # input: (n, c, w, z), target: (n, w, z)
    n, c, w, z = input.size()
    # log_p: (n, c, w, z)
    log_p = F.log_softmax(input, dim=1)
    # log_p: (n*w*z, c)
    log_p = log_p.permute(0, 3, 2, 1).contiguous().view(-1, c)  # make class dimension last dimension
    log_p = log_p[
       target.view(n, w, …
Run Code Online (Sandbox Code Playgroud)

image-segmentation cross-entropy pytorch loss-function semantic-segmentation

4
推荐指数
1
解决办法
8450
查看次数

如何将 35 类城市景观数据集转换为 19 类?

以下是我的代码的一小段。使用它,我可以在 cityscapes 数据集上训练我的名为“lolnet”的模型。但是数据集包含 35 个类/标签 [0-34]。

imports ***

trainloader = torch.utils.data.DataLoader(
    datasets.Cityscapes('/media/farshid/DataStore/temp/cityscapes/', split='train', mode='fine',
                    target_type='semantic', target_transform =trans,
                    transform=input_transform ), batch_size = batch_size, num_workers = 2)

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
net = lolNet()
criterion = CrossEntropyLoss2d()

net.to(device)
num_of_classes = 34

for epoch in range(int(0), 200000):

    lr = 0.0001

    for batch, data in enumerate(trainloader, 0):

        inputs, labels = data
        labels = labels.long()
        inputs, labels = inputs.to(device), labels.to(device)

        labels = labels.view([-1, ])

        optimizer = optim.Adam(net.parameters(), lr=lr)

        optimizer.zero_grad()
        outputs = net(inputs) …
Run Code Online (Sandbox Code Playgroud)

computer-vision image-segmentation pytorch

4
推荐指数
1
解决办法
2692
查看次数

“DataLoader”对象不支持索引

我已经通过这个 pytorch api 通过设置 download=True 下载了 ImageNet 数据集。但我无法遍历数据加载器。

错误说“'DataLoader' 对象不支持索引”

trainset = torch.utils.data.DataLoader(
    datasets.ImageNet('/media/farshid/DataStore/temp/Imagenet/', split='train',
                      download=False))
trainloader = torch.utils.data.DataLoader(trainset, batch_size=1, shuffle=False, num_workers=1)
Run Code Online (Sandbox Code Playgroud)

我尝试了一种简单的方法,我只是尝试运行以下命令,

trainloader[0]
Run Code Online (Sandbox Code Playgroud)

在根目录中,模式是

root/  
    train/  
          n01440764/
          n01443537/ 
                   n01443537_2.jpg
Run Code Online (Sandbox Code Playgroud)

官网上的文档没有说别的。https://pytorch.org/docs/stable/torchvision/datasets.html#imagenet

我究竟做错了什么 ?

python computer-vision imagenet pytorch

3
推荐指数
2
解决办法
1万
查看次数

在Pytorch中自定义距离损失功能?

我想在pytorch中实现以下距离损失功能。我正在关注pytorch论坛上的https://discuss.pytorch.org/t/custom-loss-functions/29387/4主题

np.linalg.norm(output - target)
# where output.shape = [1, 2] and target.shape = [1, 2]
Run Code Online (Sandbox Code Playgroud)

所以我实现了这样的损失功能

def my_loss(output, target):    
    loss = torch.tensor(np.linalg.norm(output.detach().numpy() - target.detach().numpy()))
    return loss
Run Code Online (Sandbox Code Playgroud)

使用此损失函数,向后调用会产生运行时错误

RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
Run Code Online (Sandbox Code Playgroud)

我的整个代码看起来像这样

model = nn.Linear(2, 2)

x = torch.randn(1, 2)
target = torch.randn(1, 2)
output = model(x)

loss = my_loss(output, target)
loss.backward()   <----- Error here

print(model.weight.grad)
Run Code Online (Sandbox Code Playgroud)

PS:我知道pytorch是成对丢失的,但是由于它的某些限制,我必须自己实现。

按照pytorch源代码,我尝试了以下操作,

class my_function(torch.nn.Module): # forgot to define backward()
    def forward(self, …
Run Code Online (Sandbox Code Playgroud)

pytorch loss-function

0
推荐指数
1
解决办法
63
查看次数