我正在尝试访问RTrees
的节点和树。拥有以下代码:
Ptr<Rtrees> rt = RTrees::create();
...
...
rt->train(data);
vector<DTrees::Split> splits = rt->getSplits();
我不断收到内存访问权限。请注意,rt->getSplits()
单独使用,我猜问题是splits
的数据类型。
此外,当我阅读训练数据信息并希望将其复制到变量中时:
std::vector<int> catMap;
data->getCapMap().copyTo(catMap);
它将垃圾复制到carMap
中,我必须逐个元素地复制它,而不是使用copyTo
方法。
你对这两个问题有什么看法吗?
谢谢,
答案 0 :(得分:1)
该内存错误看起来不像是由数据类型引起的,并且拆分类型是正确的。如果你怀疑它,请使用'auto'
auto splits = rt->getSplits();
尝试其他功能,看看你的RTrees模型是否真的可用,
auto roots = model.getRoots();
auto nodes = model.getNodes();
如果在运行时没有内存访问错误,请设置调试点或打印日志消息以查看它们是否为空
std::cout << "num trees " << roots.size();
std::cout << "num nodes " << nodes.size();