【搜索引擎】特征加工和预估
FGContext类包含了模型运行时的上下文信息feeds用于保存输入fetches为输出特征。step_id是tf运行的时候生成的唯一idstructFGContext{FGContext():session(nullptr),step_id(-1){}~FGContext(){Allocator::Get()-Release(step_id);}void*session;int64_tstep_id;std::unordered_mapstd::string,FGTensorfeeds;std::unordered_mapstd::string,FGTensorfetches;};FG 类负责加载和运行 TensorFlow 模型。Init 方法负责初始化会话和创建可调用对象boolFG::Init(intconcurrency){SessionOptions session_options;InitSessionOptions(session_options,concurrency);RunOptions run_options;autostatusLoadSavedModel(session_options,run_options,path_,{kSavedModelTagServe},bundle_);CallableOptions callable_options;staticconstchar*kDefaultSignatureserving_default;autoitbundle_.meta_graph_def.signature_def().find(kDefaultSignature);constautoinputsit-second.inputs();for(constautoinput:inputs){constautofeature_nameinput.first;constautotensorinput.second;inputs_.emplace_back(feature_name);callable_options.add_feed(tensor.name());}for(autooutput:it-second.outputs()){constautofeature_nameoutput.first;constautotensoroutput.second;outputs_.push_back(feature_name);callable_options.add_fetch(tensor.name());}statusbundle_.session-MakeCallable(callable_options,handle_);}Run执行模型的推理并将结果存储在上下文中。fg的run方法一般运行fg的模型输入数据输出fg的产出的特征。boolFG::Run(FGContext*context){vector::tensorflow::Tensorinputs;::tensorflow::Tensorctx(::tensorflow::DT_VARIANT,{});ctx.scalartensorflow::Variant()()VariantWrapperFGContext(context);inputs.emplace_back(std::move(ctx));vector::tensorflow::Tensoroutputs;autostatusbundle_.session-RunCallable(handle_,inputs,outputs,nullptr);for(size_t i0;ioutputs_.size();i){autofg_tensor*outputs[i].scalar::tensorflow::Variant()().getFGTensor();context-fetches.emplace(outputs_[i],fg_tensor);}}FGManager用于管理注册的fgclassFGManager:publicSingletonBaseFGManager{public:voidRegister(std::shared_ptrFGfg){std::lock_guardstd::mutexlock(mutex_);fgs_[fg-name()]fg;}std::shared_ptrFGGetFG(conststd::stringname)const{std::lock_guardstd::mutexlock(mutex_);staticstd::shared_ptrFGdummy;autoitfgs_.find(name);if(itfgs_.end()){returndummy;}returnit-second;}voidClear(){std::lock_guardstd::mutexlock(mutex_);fgs_.clear();}private:mutablestd::mutex mutex_;std::unordered_mapstd::string,std::shared_ptrFGfgs_;};FGPredictorPredict预处理数据调用fg运行fg生成特征tensor调用tfmodel运行算法预估模型生成预估分FGPredictor::Predict(GraphSession*graph_session){autofgfg::FGManager::Get()-GetFG(runtime.fg_name);autocontextPreProcess(graph_session,output,params,idxs);autofgfg::FGManager::Get()-GetFG(runtime.fg_name);fg::FGContext fg_ctx;fg_ctx.sessioncontext.get();if(!fg-Run(fg_ctx))auto*modelreinterpret_castTfModel*(runtime.model);autosmodel-Predict(fg_ctx,model_scores);}TfModelPredict调用tf Predict 函数输入feature构建Tensor调用模型预估StatusTfModel::Predict(constdfg::FGContextfg_context,std::vectorstd::vectorfloatscores){intbatch_sizereinterpret_castPredictContext*(fg_context.session)-GetTotalSize();std::vectortensorflow::Tensorfeeds;feeds.reserve(features_.size());for(constautofeature:features_){constautofeature_namefeature.first;autoitfg_context.fetches.find(feature_name);feeds.emplace_back(BuildTensor(it-second,feature.second,batch_size));}std::vectortensorflow::Tensorfetches;autostatusbundle_.session-RunCallable(handle_,feeds,fetches,nullptr);GetResultsFromTfOutputs(fetches,scores);returnStatus::OK();}

相关新闻

MySQL数据库设计实战:从表结构到索引优化的完整方法论

MySQL数据库设计实战:从表结构到索引优化的完整方法论

1. 设计思路拆解:别急着建表,先想清楚这张表为谁而生MySQL数据库设计这件事,但凡写过几年后端的人,多半都经历过这种场景:业务方一句话"先给我攒个库",你花两小时咔咔建了十几张表,结…

2026/10/17 12:28:03 阅读更多 →
Kubernetes集群HTTPS证书自动化:cert-manager DNS01实战指南

Kubernetes集群HTTPS证书自动化:cert-manager DNS01实战指南

如果你维护的 Kubernetes 集群已经进入了多个团队共用的阶段,HTTPS 证书一定是你绕不过去的一件事。cert-manager 是这个场景里最常用的自动化证书管理组件,而 ACME DNS01 是它几种验证方式里最“省心”也最“麻烦”的一种。说它省心,是因为只…

2026/10/17 10:46:50 阅读更多 →
Pandas自定义排序实战:映射法、Categorical与key参数详解

Pandas自定义排序实战:映射法、Categorical与key参数详解

1. 为什么默认排序总差那么点意思做过数据分析的人都有这种体会:sort_values()用起来确实顺手,按某一列升序降序一行代码就搞定。但真实业务里的排序需求,往往没那么"标准"。比如电商后台想把"爆款、新品、清仓、常规"这…

2026/10/16 7:20:07 阅读更多 →

最新新闻

open-code-review:基于CLI与git diff的AI代码评审工作流

open-code-review:基于CLI与git diff的AI代码评审工作流

1. “open-code-review”不是新工具,而是一套可落地的AI代码评审工作流设计“open-code-review”这个词最近在开发者社区里频繁出现,但它既不是某个刚发布的开源项目,也不是某家大厂推出的SaaS服务。我第一次在GitHub Discussions里看到它&am…

2026/10/17 13:27:33 阅读更多 →
Linux驱动开发模板:从字符设备到平台驱动的完整套路

Linux驱动开发模板:从字符设备到平台驱动的完整套路

写Linux驱动,说来说去一半以上都是模板活。我刚接手第一个驱动项目时,被file_operations、cdev_add、platform_driver这些名字砸得晕头转向,后来翻了几份参考实现的源码,发现大家套路其实差不多:先注册一个字符设备或平…

2026/10/17 13:27:33 阅读更多 →
Android构建系统全解析:Gradle、AGP与依赖管理实践

Android构建系统全解析:Gradle、AGP与依赖管理实践

前阵子有个朋友发来一个求助:他改了build.gradle里的一个依赖版本,然后 sync 就失败了,报错信息是一大段堆栈,里面混杂着 Groovy 语法错误、AGP 的异常提示还有 Gradle 的下载日志,他完全不知道从哪里下手,…

2026/10/17 13:27:33 阅读更多 →
Aria 多语言支持:5 分钟切到母语界面的完整指南

Aria 多语言支持:5 分钟切到母语界面的完整指南

Aria 多语言支持:5 分钟切到母语界面的完整指南 【免费下载链接】Aria 下载可以很简单 项目地址: https://gitcode.com/GitHub_Trending/ar/Aria Aria 自带多语言支持,界面语言可随时切换。不用重装软件,两分钟就能把整个下载界面换成…

2026/10/17 13:27:33 阅读更多 →
企业级AI智能体开发:人机协同与架构设计实战

企业级AI智能体开发:人机协同与架构设计实战

在企业里做AI智能体,我踩过最大的坑不是模型不够聪明,而是"全自动"三个字把业务部门全吓跑了。智能体一旦自己决策、自己执行、自己给出结论,中间没有任何人来把关,出了问题谁都担不起这个责任。我参与DeepMiner这个企业…

2026/10/17 13:27:33 阅读更多 →
故障检测与容错机制实战:从无声故障到高可用架构设计

故障检测与容错机制实战:从无声故障到高可用架构设计

做故障检测与容错机制,最怕的不是故障本身,而是故障已经发生了,监控面板上却一片平静。上个月处理了一个线上问题:订单流程依赖的账号服务实例B每隔一段时间就会出现一次2到3秒的卡顿,但整个监控体系从头到尾一声不吭&…

2026/10/17 13:26:32 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →