C++ 什么';是libtorch中np.delete的等价物吗?

C++ 什么';是libtorch中np.delete的等价物吗?,c++,torch,libtorch,C++,Torch,Libtorch,似乎我们在libtorch中还没有一个np.delete等价物,那么我们如何模拟它的行为呢?例如,我试图在libtorch中重写以下代码: ids=np.delete(ids,np.concatenate([[last],np.where(overlap>overlap_threshold)[0]])) 我该怎么做?我考虑过切片,但我不确定是否有我不知道的暗示。这就是我想到的: neg=torch.where(重叠重叠阈值)[0]])) 负=np.其中(重叠0) { //#最大值的抓取指数 a

似乎我们在libtorch中还没有一个
np.delete
等价物,那么我们如何模拟它的行为呢?例如,我试图在libtorch中重写以下代码:

ids=np.delete(ids,np.concatenate([[last],np.where(overlap>overlap_threshold)[0]]))
我该怎么做?我考虑过切片,但我不确定是否有我不知道的暗示。这就是我想到的:

neg=torch.where(重叠
libtorch:

auto neg=torch::其中(重叠0:
#最大值的抓取指数
last=len(ids)-1
i=ids[最后]
#交叉点框的左上角
ix1=np.最大值(x1[i],x1[id[:last]]
iy1=np.最大值(y1[i],y1[id[:last]]
#相交框的右下角
ix2=np.最小值(x2[i],x2[id[:last]]
iy2=np.最小值(y2[i],y2[id[:last]]
#交叉框的宽度和高度
w=np.最大值(0.0,ix2-ix1+1.0)
h=np.最大值(0.0,iy2-iy1+1.0)
#交叉口区域
inter=w*h
如果模式=='min':
重叠=内部/np.最小值(面积[i],面积[id[:last]]
elif模式==“联合”:
#联合体上的交点(IoU)
重叠=内部/(区域[i]+区域[id[:last]]]-内部)
#删除重叠过大的所有框
#ids=np.delete(ids,np.concatenate([[last],np.where(重叠>重叠阈值)[0]]))
负=np.其中(重叠0)
{
//#最大值的抓取指数
auto last=ids.size()[0]-1;
自动i=id[最后];
//#交叉点框的左上角
auto-ix1=torch::max(x1[i],x1.index({id.index({Slice(None,last)}));
auto iy1=torch::max(y1[i],y1.index({ids.index({Slice(None,last)}));
//#相交框的右下角
autoix2=torch::min(x2[i],x2.index({id.index({Slice(None,last)}));
autoiy2=torch::min(y2[i],y2.index({ids.index({Slice(None,last)}));
//#交叉框的宽度和高度
自动w=火炬::最大值(火炬::张量(0.0),ix2-ix1+1.0);
自动h=torch::max(torch::张量(0.0),iy2-iy1+1.0);
//#交叉口区域
自动交互=w*h;
火炬:张量重叠;
如果(模式=“最小值”)
{
重叠=inter/torch::min(区域[i],区域.index({id.index({Slice(None,last)}));
}
否则如果(模式=“联合”)
{/#联合上的交集(IoU)
重叠=inter/(区域[i]+区域索引({ids.index({Slice(None,last)})})-inter);
}
//#删除重叠过大的所有框
//#ids=np.delete(ids,np.concatenate([[last],np.where(重叠>重叠阈值)[0]]))
自动负=火炬::其中(重叠<重叠阈值)[0];
ids=ids.index({neg});

std::cout正如评论中指出的那样,这似乎是一种合理的方法。也就是说,颠倒条件,只根据新条件进行过滤。
我还想在我原来的帖子中解决一个小问题。 与蟒蛇相同的正确形式:

ids=np.delete(ids,np.concatenate([[last],np.where(overlap>overlap_threshold)[0]]))
将是:


auto neg=torch::where(overlap)听起来你想做一个反向掩码,而不是调用np。我在这里做的不是什么,完全一样吗?是的。这就是方法。没有隐藏的含义。不过不要克隆。被屏蔽的部分已经是副本了