Qwen3-Reranker实战教程:Python API封装Qwen3-Reranker供其他服务调用

news2026/3/25 4:55:29
Qwen3-Reranker实战教程Python API封装Qwen3-Reranker供其他服务调用你是不是也遇到过这样的问题用向量数据库检索出来的文档看起来都沾点边但真正能回答你问题的可能就那么一两篇。把一堆不太相关的文档一股脑儿塞给大模型结果要么是回答得模棱两可要么干脆就开始“一本正经地胡说八道”。这就是典型的检索精度不够。向量检索也叫粗排就像用一个大网捞鱼先把可能相关的都捞上来。但要想吃到最肥美的那条还得靠“精挑细选”。今天要聊的Qwen3-Reranker就是帮你做“精挑细选”的利器。它是一个专门用于语义重排序的模型能深度理解你的问题和每个候选文档之间的关系然后给它们打分、排序把最相关的文档挑出来放在最前面。之前你可能通过Web界面用过它但今天我们要更进一步把它封装成一个独立的Python API服务。这样你的其他应用比如RAG系统、智能客服或者搜索平台就能像调用一个普通函数一样轻松获得精准的文档排序能力。学完这篇教程你将掌握如何将Qwen3-Reranker模型封装成一个可复用的Python类。如何基于FastAPI构建一个高性能的HTTP API服务。如何通过Docker容器化部署让服务随处可运行。学会在Python代码中直接调用这个API完成语义重排序。1. 为什么需要封装成API在深入代码之前我们先搞清楚一件事为什么有了Web工具还要大费周章地封装API想象一下这个场景你开发了一个智能问答系统。用户提问后系统需要从知识库中检索出20篇相关文档。对这20篇文档进行重排序找出最相关的3篇。将这3篇文档和问题一起交给大模型生成最终答案。如果重排序功能只是一个本地脚本那么你的主程序每次都要初始化模型加载一次就好几GB。处理输入输出格式。管理模型的生命周期什么时候加载什么时候释放内存。这会让你的主程序变得臃肿而且模型加载和推理的逻辑与业务逻辑耦合在一起难以维护和扩展。封装成API的好处显而易见解耦与复用重排序成为一个独立的服务。你的问答系统、内容推荐系统、搜索引擎都可以调用同一个API无需各自维护一套模型代码。资源高效利用API服务启动后模型常驻内存。多个请求可以共享同一个模型实例避免了重复加载的开销。标准化接口提供统一的HTTP或gRPC接口无论你的主程序是用Python、Java、Go还是Node.js写的都能轻松调用。易于部署和扩展可以独立部署、监控和扩缩容。当请求量变大时你可以轻松地启动多个API服务实例并用负载均衡器分发请求。简单说封装API就是把一个复杂的“计算工具”变成一个简单的“黑盒服务”你只需要告诉它“问题”和“文档”它就会返回“排序结果”不用关心内部是怎么实现的。2. 核心封装Python工具类首先我们来构建这个服务的核心——一个负责与Qwen3-Reranker模型交互的Python类。这个类会处理模型的加载、推理和分数计算。创建一个名为reranker_service.py的文件。# reranker_service.py import torch from transformers import AutoModelForCausalLM, AutoTokenizer from typing import List, Tuple import numpy as np import logging # 设置日志方便调试 logging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__) class QwenReranker: Qwen3-Reranker 模型封装类。 负责加载模型、处理输入格式并计算查询与文档之间的相关性分数。 def __init__(self, model_name_or_path: str qwen/Qwen3-Reranker-0.6B, device: str None): 初始化Reranker加载模型和分词器。 Args: model_name_or_path (str): 模型名称或本地路径。默认为魔搭社区上的模型ID。 device (str, optional): 指定运行设备如 cuda:0, cpu。为None时自动选择。 logger.info(f正在加载模型: {model_name_or_path}) # 自动选择设备优先GPU如果没有则用CPU if device is None: self.device torch.device(cuda if torch.cuda.is_available() else cpu) else: self.device torch.device(device) logger.info(f使用设备: {self.device}) # 加载分词器和模型 # 注意Qwen3-Reranker使用CausalLM架构但内部实现了Cross-Encoder的逻辑 self.tokenizer AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_codeTrue) self.model AutoModelForCausalLM.from_pretrained( model_name_or_path, torch_dtypetorch.float16 if self.device.type cuda else torch.float32, device_mapauto if self.device.type cuda else None, trust_remote_codeTrue ) # 如果是CPU需要手动将模型移到设备上 if self.device.type cpu: self.model self.model.to(self.device) self.model.eval() # 设置为评估模式 logger.info(模型加载完毕准备就绪。) def _format_input_text(self, query: str, document: str) - str: 将查询和文档格式化为模型期望的输入文本。 这是Qwen3-Reranker特定的提示模板。 Args: query (str): 用户查询。 document (str): 候选文档。 Returns: str: 格式化后的文本。 # Qwen3-Reranker 期望的输入格式 formatted_text f查询{query}\n文档{document} return formatted_text def compute_score(self, query: str, document: str) - float: 计算单个查询-文档对的相关性分数。 Args: query (str): 查询文本。 document (str): 文档文本。 Returns: float: 相关性分数分数越高表示越相关。 # 1. 格式化输入 input_text self._format_input_text(query, document) # 2. 分词 inputs self.tokenizer(input_text, return_tensorspt, truncationTrue, max_length512) inputs {k: v.to(self.device) for k, v in inputs.items()} # 移动到指定设备 # 3. 模型推理不计算梯度节省内存 with torch.no_grad(): outputs self.model(**inputs) # Qwen3-Reranker 的相关性分数通常从模型输出的logits中提取 # 这里是一个简化的示例取最后一个token的logits作为分数参考 # 实际使用时请根据模型的具体实现调整分数提取逻辑 logits outputs.logits # 假设相关性信息编码在序列的最后一个位置 score logits[0, -1].mean().item() return score def rerank(self, query: str, documents: List[str], top_k: int None) - List[Tuple[str, float, int]]: 对一组文档进行重排序。 Args: query (str): 查询文本。 documents (List[str]): 候选文档列表。 top_k (int, optional): 返回前K个结果。为None时返回全部排序结果。 Returns: List[Tuple[str, float, int]]: 排序后的列表每个元素是(文档内容, 分数, 原始排名)。 if not documents: return [] scored_docs [] logger.info(f开始对 {len(documents)} 个文档进行重排序...) for idx, doc in enumerate(documents): try: score self.compute_score(query, doc) scored_docs.append((doc, score, idx)) except Exception as e: logger.error(f处理文档 {idx} 时出错: {e}) # 出错时给予一个极低的分数避免影响整体流程 scored_docs.append((doc, -999.0, idx)) # 按分数降序排序分数越高越相关 scored_docs.sort(keylambda x: x[1], reverseTrue) # 如果指定了top_k则截取前K个 if top_k is not None and top_k 0: scored_docs scored_docs[:top_k] logger.info(重排序完成。) return scored_docs # 提供一个全局实例方便单例模式调用可选 _global_reranker None def get_reranker(model_path: str qwen/Qwen3-Reranker-0.6B, device: str None) - QwenReranker: 获取全局的Reranker实例单例模式避免重复加载模型。 Args: model_path (str): 模型路径。 device (str): 设备。 Returns: QwenReranker: 全局的reranker实例。 global _global_reranker if _global_reranker is None: _global_reranker QwenReranker(model_path, device) return _global_reranker这个类做了几件关键的事智能初始化在__init__方法里它能自动判断是否有GPU可用并选择合适的数据类型GPU上用半精度以节省内存。格式化输入_format_input_text方法按照Qwen3-Reranker模型的要求把问题和文档拼接成特定的格式。计算单个分数compute_score是核心它把格式化的文本送给模型并提取出表示相关性的分数。这里需要特别注意分数提取的逻辑可能因模型版本而异实际使用时建议查阅官方文档。批量重排序rerank方法是对外的主要接口。你给它一个问题和一个文档列表它就能返回一个按相关性排序好的新列表每个结果还附带了分数和原始位置。单例模式底部的get_reranker函数是一个小技巧确保在整个应用中模型只被加载一次避免浪费内存和时间。有了这个核心类我们就可以在Python代码里直接调用了# 示例在Python脚本中使用 from reranker_service import get_reranker # 获取模型实例首次调用会加载模型 reranker get_reranker() # 准备数据 my_query 如何学习Python编程 my_documents [ Python是一种高级编程语言语法简洁。, 机器学习是人工智能的一个分支。, 学习Python可以从基础语法、数据结构开始然后尝试做项目。, 今天的天气很好。 ] # 进行重排序只取前2个结果 results reranker.rerank(my_query, my_documents, top_k2) print(重排序结果) for doc, score, original_idx in results: print(f分数{score:.4f} | 原始位置{original_idx} | 文档{doc[:50]}...)3. 构建HTTP API服务光有Python类还不够我们要让其他语言的服务也能调用。接下来我们用FastAPI这个现代、高性能的Web框架来构建HTTP API。创建一个名为api_server.py的文件。# api_server.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import List, Optional import uvicorn import logging # 导入我们刚才写的工具类 from reranker_service import get_reranker # 初始化FastAPI应用 app FastAPI( titleQwen3-Reranker API Service, description基于Qwen3-Reranker的语义重排序HTTP API服务, version1.0.0 ) # 全局模型实例 reranker None # 定义API请求和响应的数据模型 class RerankRequest(BaseModel): 重排序请求体 query: str documents: List[str] top_k: Optional[int] None # 不传则返回全部排序结果 class DocumentScore(BaseModel): 单个文档的得分和排名信息 document: str score: float original_index: int ranked_index: int # 排序后的新位置 class RerankResponse(BaseModel): 重排序响应体 query: str processed_count: int results: List[DocumentScore] app.on_event(startup) async def startup_event(): 服务启动时加载模型 global reranker logging.info(正在启动API服务加载Qwen3-Reranker模型...) # 这里可以修改模型路径或设备例如 devicecuda:0 reranker get_reranker(model_pathqwen/Qwen3-Reranker-0.6B) logging.info(模型加载完成API服务准备就绪。) app.get(/) async def root(): 根路径返回服务信息 return { service: Qwen3-Reranker API, status: running, model: qwen/Qwen3-Reranker-0.6B } app.get(/health) async def health_check(): 健康检查端点 if reranker is None: raise HTTPException(status_code503, detailModel not loaded) return {status: healthy, model_loaded: True} app.post(/rerank, response_modelRerankResponse) async def rerank_documents(request: RerankRequest): 重排序接口。 接收一个查询和文档列表返回按相关性排序的结果。 if reranker is None: raise HTTPException(status_code503, detailService initializing, please try again later.) if not request.documents: raise HTTPException(status_code400, detailDocuments list cannot be empty.) try: # 调用核心重排序逻辑 scored_docs reranker.rerank(request.query, request.documents, request.top_k) # 构建响应 results [] for ranked_idx, (doc, score, original_idx) in enumerate(scored_docs): results.append(DocumentScore( documentdoc, scorefloat(score), # 确保是Python原生float方便JSON序列化 original_indexoriginal_idx, ranked_indexranked_idx )) return RerankResponse( queryrequest.query, processed_countlen(results), resultsresults ) except Exception as e: logging.error(fRerank processing failed: {e}) raise HTTPException(status_code500, detailfInternal server error: {str(e)}) if __name__ __main__: # 启动服务监听所有网络接口的8000端口 uvicorn.run(app, host0.0.0.0, port8000, log_levelinfo)这个API服务提供了两个主要端点GET /和GET /health用于检查服务是否正常运行。POST /rerank这是核心接口。你需要发送一个JSON格式的请求包含query你的问题、documents文档列表和可选的top_k想要前几个结果。它会返回排序后的文档列表每个文档都带有分数和排名信息。现在你可以运行这个服务了python api_server.py服务启动后打开浏览器访问http://你的服务器IP:8000/docs你会看到一个自动生成的交互式API文档Swagger UI可以直接在那里测试接口。4. 容器化部署Docker一步到位为了在任何地方都能轻松运行这个服务我们把它打包成Docker镜像。这能确保运行环境一致避免“在我机器上好好的”这类问题。创建一个名为Dockerfile的文件。# Dockerfile # 使用官方Python镜像作为基础 FROM python:3.10-slim # 设置工作目录 WORKDIR /app # 安装系统依赖如果需要 RUN apt-get update apt-get install -y \ gcc \ g \ rm -rf /var/lib/apt/lists/* # 复制依赖文件并安装 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 复制应用代码 COPY . . # 暴露端口与api_server.py中一致 EXPOSE 8000 # 设置环境变量可选 ENV PYTHONUNBUFFERED1 # 启动命令 CMD [python, api_server.py]再创建一个requirements.txt文件列出所有Python依赖。# requirements.txt fastapi0.104.1 uvicorn[standard]0.24.0 torch2.1.0 transformers4.36.0 accelerate0.25.0 pydantic2.5.0现在在包含Dockerfile、requirements.txt、reranker_service.py和api_server.py的目录下执行以下命令来构建和运行Docker容器# 1. 构建Docker镜像给镜像起个名字比如 qwen-reranker-api docker build -t qwen-reranker-api . # 2. 运行容器 # -p 8000:8000 将容器的8000端口映射到主机的8000端口 # --name reranker-service 给容器起个名字 docker run -d -p 8000:8000 --name reranker-service qwen-reranker-api # 3. 查看容器日志确认服务启动成功 docker logs -f reranker-service看到日志显示“模型加载完成API服务准备就绪”后你的重排序API服务就已经在Docker容器中运行起来了你可以通过http://localhost:8000来访问它。5. 客户端调用示例服务跑起来了我们来看看怎么用。这里提供Python和命令行两种调用方式。Python客户端调用创建一个test_client.py文件。# test_client.py import requests import json # API服务地址如果服务在本地 API_URL http://localhost:8000/rerank def rerank_with_api(query, documents, top_kNone): 调用重排序API payload { query: query, documents: documents } if top_k is not None: payload[top_k] top_k try: response requests.post(API_URL, jsonpayload, timeout30) response.raise_for_status() # 如果状态码不是200抛出异常 return response.json() except requests.exceptions.RequestException as e: print(fAPI请求失败: {e}) if hasattr(e, response) and e.response is not None: print(f响应内容: {e.response.text}) return None if __name__ __main__: # 测试数据 test_query 如何准备机器学习面试 test_docs [ 机器学习面试常考算法原理和推导。, Python是数据科学的主要编程语言。, 准备面试需要复习线性代数、概率论和机器学习算法。, 今天中午吃面条。, 刷LeetCode算法题对通过编程轮次很有帮助。, 深度学习是机器学习的一个子领域。 ] print(f查询{test_query}) print(f原始文档数量{len(test_docs)}) # 调用API只取前3个结果 result rerank_with_api(test_query, test_docs, top_k3) if result: print(f\n处理文档数{result[processed_count]}) print(*50) for item in result[results]: print(f排名 {item[ranked_index]1} (原位置 {item[original_index]1})) print(f分数{item[score]:.4f}) print(f文档{item[document][:60]}...) # 只显示前60字符 print(-*30)运行这个脚本你就能看到API返回的排序结果了。使用curl命令行调用如果你喜欢用命令行或者想在shell脚本中集成curl是个好工具。curl -X POST http://localhost:8000/rerank \ -H Content-Type: application/json \ -d { query: 如何学习深度学习, documents: [ 深度学习需要掌握神经网络基础知识。, Python编程是入门的第一步。, 反向传播算法是训练神经网络的核心。, 天气晴朗适合户外运动。 ], top_k: 2 }执行后你会收到一个JSON格式的响应里面就是排序后的文档。6. 总结走完这个教程你已经完成了几件很有价值的事理解了核心价值你知道了为什么要把Qwen3-Reranker这样的模型封装成API服务——为了解耦、复用和高效管理。掌握了核心封装你学会了如何编写一个健壮的Python类来加载模型、处理输入输出这是服务的基础。构建了Web服务你用FastAPI快速搭建了一个高性能的HTTP API提供了标准化的接口。实现了容器化通过Docker你把整个服务打包成了一个可以随处运行、环境一致的“软件包”。学会了如何调用无论是用Python代码还是命令行你都能轻松地使用这个重排序服务了。下一步可以做什么性能优化如果文档很多可以考虑使用批处理batch来加速推理。添加缓存对于相同的查询和文档组合可以直接返回缓存的结果减少模型计算。完善监控给API服务添加日志记录、性能指标如响应时间和健康检查方便运维。构建更复杂的系统将这个API作为你RAG系统中的一个可靠组件结合向量数据库和大模型构建更强大的智能应用。把这个封装好的API服务想象成你工具箱里的一个“智能筛子”。以后在任何需要从一堆文本中精准找出最相关内容的场景你都可以把它拿出来用。希望这个教程能帮你把Qwen3-Reranker的能力更轻松、更专业地融入到你的项目中去。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2436471.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…