コード例 #1
0
shared_ptr<Patch> CachingPyramidFeatureExtractor::extractOutputCopying(CacheLayer& layer, int x, int y) const {
	CacheKey key(x, y);
	unordered_map<CacheKey, shared_ptr<Patch>, CacheKey::hash>& layerCache = layer.getCache();
	auto iterator = layerCache.find(key);
	if (iterator == layerCache.end()) {
		shared_ptr<Patch> patch = extractor->extract(layer.getIndex(), x, y);
		layerCache.emplace(key, patch);
		return patch;
	}
	return make_shared<Patch>(*(iterator->second));
}
コード例 #2
0
shared_ptr<Patch> CachingPyramidFeatureExtractor::extractInputCopying(CacheLayer& layer, int x, int y) const {
	CacheKey key(x, y);
	unordered_map<CacheKey, shared_ptr<Patch>, CacheKey::hash>& layerCache = layer.getCache();
	auto iterator = layerCache.find(key);
	if (iterator == layerCache.end()) {
		shared_ptr<Patch> patch = extractor->extract(layer.getIndex(), x, y);
		if (patch) // store a copy of the patch only if it exists
			layerCache.emplace(key, make_shared<Patch>(*patch));
		return patch;
	}
	return iterator->second;
}