技术培训网站网站给假冒伪劣产品做推广

张小明 2025/12/28 20:45:56
技术培训网站,网站给假冒伪劣产品做推广,山东恒昆建设工程有限公司网站,六安市网站建设零基础吃透#xff1a;tf.function与RaggedTensor的结合使用 核心背景#xff08;先理清#xff09; tf.function#xff1a;TensorFlow的核心装饰器#xff0c;能把Python函数编译成TensorFlow计算图#xff08;而非逐行执行的Eager模式#xff09;#xff0c;大幅提升…零基础吃透tf.function与RaggedTensor的结合使用核心背景先理清tf.functionTensorFlow的核心装饰器能把Python函数编译成TensorFlow计算图而非逐行执行的Eager模式大幅提升代码执行效率尤其是重复调用/部署场景关键特性RaggedTensor可透明兼容tf.function——无需修改函数逻辑同时支持密集张量普通tf.Tensor和RaggedTensor输入TF会自动适配计算图。先准备基础运行环境importtensorflowastfprint(fTensorFlow版本{tf.__version__})# 建议2.3具体函数需此版本支持场景1tf.function对RaggedTensor的“透明支持”无需改代码核心逻辑被tf.function装饰的函数对密集张量和RaggedTensor的处理逻辑完全一致——TF会自动识别输入类型调用适配RaggedTensor的算子如tf.concat有专门的Ragged处理逻辑无需额外修改代码。代码逐行解析# 1. 定义编译成计算图的函数生成回文序列tf.function# 核心装饰器转计算图defmake_palindrome(x,axis):# 逻辑拼接原张量 反转后的张量生成回文reversed_xtf.reverse(x,[axis])# 反转张量支持Raggedreturntf.concat([x,reversed_x],axis)# 拼接支持Ragged# 2. 测试1传入密集张量普通tf.Tensordense_xtf.constant([[1,2],[3,4],[5,6]])dense_resultmake_palindrome(dense_x,axis1)print( 密集张量执行结果 )print(dense_result)# 3. 测试2传入RaggedTensor无需改函数ragged_xtf.ragged.constant([[1,2],[3],[4,5,6]])ragged_resultmake_palindrome(ragged_x,axis1)print(\n RaggedTensor执行结果 )print(ragged_result)运行结果解读 密集张量执行结果 tf.Tensor( [[1 2 2 1] [3 4 4 3] [5 6 6 5]], shape(3, 4), dtypeint32) RaggedTensor执行结果 2022-12-14 22:26:12.602591: W tensorflow/core/grappler/optimizers/loop_optimizer.cc:907] Skipping loop optimization for Merge node with control input: RaggedConcat/assert_equal_1/Assert/AssertGuard/branch_executed/_9 tf.RaggedTensor [[1, 2, 2, 1], [3, 3], [4, 5, 6, 6, 5, 4]]关键解读函数逻辑通用密集张量每行[1,2]反转后[2,1]拼接成[1,2,2,1]RaggedTensor每行[3]反转后[3]拼接成[3,3][4,5,6]反转后[6,5,4]拼接成[4,5,6,6,5,4]——完全符合回文逻辑无需改代码。警告说明非错误警告内容Skipping loop optimization for Merge node...原因TF的Grappler优化器计算图优化工具对RaggedTensor的复杂节点跳过了循环优化Ragged的行长度不规则部分优化不适用影响仅跳过优化不影响计算结果和功能可直接忽略。核心原理tf.function对RaggedTensor的“透明支持”TF会自动识别输入是RaggedTensor调用Ragged版本的算子如tf.concat内部会判断输入类型选择密集/Ragged拼接逻辑计算图会保留RaggedTensor的“行分区规则”记录每行长度保证运算结果符合可变长度的逻辑。场景2为tf.function指定input_signatureRaggedTensorSpec核心背景input_signature是tf.function的参数作用是限定输入的类型/形状提升性能避免tf.function为不同输入类型/形状重复生成计算图部署安全明确输入规范防止传入不兼容的输入针对RaggedTensor需用tf.RaggedTensorSpec替代普通的tf.TensorSpec。代码解析# 装饰器指定input_signature为RaggedTensorSpec限定输入规范tf.function(# 输入签名二维RaggedTensorshape[None, None]两个维度都可变dtypeint32input_signature[tf.RaggedTensorSpec(shape[None,None],dtypetf.int32)])defmax_and_min(rt):# 计算最后一维的最大值/最小值原生支持Raggedmax_valstf.math.reduce_max(rt,axis-1)min_valstf.math.reduce_min(rt,axis-1)return(max_vals,min_vals)# 测试传入符合签名的RaggedTensorragged_xtf.ragged.constant([[1,2],[3],[4,5,6]])max_vals,min_valsmax_and_min(ragged_x)print(\n 指定input_signature后的执行结果 )print(每行最大值,max_vals)print(每行最小值,min_vals)运行结果解读 指定input_signature后的执行结果 每行最大值 tf.Tensor([2 3 6], shape(3,), dtypeint32) 每行最小值 tf.Tensor([1 3 4], shape(3,), dtypeint32)计算逻辑对每行最后一维求最大/最小值完全适配Ragged的可变长度第一行[1,2]→ 最大2、最小1第二行[3]→ 最大3、最小3第三行[4,5,6]→ 最大6、最小4。关键APItf.RaggedTensorSpectf.RaggedTensorSpec是描述RaggedTensor的“输入签名类”核心参数如下参数含义shapeRaggedTensor的形状None表示可变维度如[None, None]二维两个维度都可变均匀维度可指定具体值如[3, None]固定3行每行元素数可变dtypeRaggedTensor的元素类型如tf.int32/tf.stringragged_rank可选不规则维度的数量如ragged_rank1表示只有最后1个维度是不规则的示例不同的RaggedTensorSpec# 三维RaggedTensor固定2个样本后两维可变且后两维都是不规则的spectf.RaggedTensorSpec(shape[2,None,None],dtypetf.int32,ragged_rank2)print(自定义RaggedTensorSpec,spec)场景3具体函数Concrete Function与RaggedTensor核心背景具体函数Concrete Functiontf.function编译后生成的具体计算图实例绑定了特定输入类型/形状比普通tf.function更快无需动态跟踪是部署的首选版本要求TF 2.3 开始原生支持RaggedTensor与具体函数结合低版本会报错。代码解析# 1. 定义编译成计算图的函数元素1tf.functiondefincrement(x):returnx1# 对RaggedTensor的每个元素1保留原始结构# 2. 构建RaggedTensorrttf.ragged.constant([[1,2],[3],[4,5,6]])# 3. 获取具体函数绑定RaggedTensor的输入类型/形状cfincrement.get_concrete_function(rt)# 4. 执行具体函数性能更高cf_resultcf(rt)print(\n 具体函数执行结果 )print(cf_result)运行结果解读 具体函数执行结果 tf.RaggedTensor [[2, 3], [4], [5, 6, 7]]逻辑对RaggedTensor的每个元素1完全保留原始可变长度结构[1,2]→[2,3]、[3]→[4]、[4,5,6]→[5,6,7]优势具体函数只需编译一次后续调用直接执行计算图性能比普通tf.function更高。版本兼容写法可选若需兼容低版本TF可加异常捕获try:cfincrement.get_concrete_function(rt)print(cf(rt))exceptExceptionase:print(fTF版本过低不支持{type(e).__name__}:{e})核心总结tf.functionRaggedTensor关键要点场景核心用法关键API/参数透明支持直接传入RaggedTensor无需改函数逻辑tf.function 普通TF算子concat/reduce_max等指定输入签名用RaggedTensorSpec限定RaggedTensor的形状/类型tf.RaggedTensorSpec(shape, dtype)具体函数TF2.3直接调用get_concrete_function(rt)tf.function.get_concrete_function避坑关键警告不是错误Grappler优化器的跳过警告不影响结果可忽略版本兼容具体函数对RaggedTensor的支持从TF2.3开始低版本需升级算子兼容所有TF内置算子reduce_max/concat/range等都原生支持RaggedTensor可直接在tf.function中使用input_signature的shapeRaggedTensor的不规则维度必须用None表示均匀维度可指定具体值如[5, None]固定5行。性能优化建议若函数需重复调用同一类型的RaggedTensor建议指定input_signature避免重复编译计算图部署时优先使用具体函数Concrete Function性能更高避免在tf.function内动态创建RaggedTensor如tf.ragged.constant尽量把数据预处理放在函数外。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站开发技术 创新点googleseo是什么

作为职场中高频使用的打印机品牌,映美凭借稳定的性能、高性价比的优势,成为不少企业、工作室及个人用户的首选。但用过映美的朋友都懂,最让人头疼的不是打印机本身,而是驱动失效、安装失败的突发状况——急着打印合同、报表&#…

张小明 2025/12/27 4:15:29 网站建设

用python做网站后台网络技术网站

终极指南:C语言HTML解析库gumbo-parser的完整使用手册 【免费下载链接】gumbo-parser An HTML5 parsing library in pure C99 项目地址: https://gitcode.com/gh_mirrors/gum/gumbo-parser 在C语言开发领域,HTML解析库的选择往往决定了项目的成败…

张小明 2025/12/26 18:12:21 网站建设

vs2019怎么创建网站负责网站开发的岗位

嵌入式文件系统与LittleFS核心原理及实战优化 在智能家居、工业传感和边缘计算设备日益普及的今天,我们越来越依赖那些“默默无语”的微控制器来记录数据、保存配置甚至完成固件升级。但你有没有想过:当设备突然断电时,你的温湿度日志还在吗&…

张小明 2025/12/26 23:47:29 网站建设

网上超市网站的设计与实现软件开发方式

Excalidraw如何应对高并发协作场景? 在远程办公成为常态的今天,团队成员可能分布在不同时区、不同城市,甚至不同的网络环境中。当一场关键的产品评审会议正在进行时,五位工程师正同时在同一个白板上调整架构图:有人拖动…

张小明 2025/12/26 1:14:26 网站建设

wordpress文章底部文字广告自动app优化最新版

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2025/12/26 6:53:45 网站建设

六安市建设局网站资源网官网

我,一个负责过30企业级文件传输项目的上海IT人,想和你聊聊这个100G大文件传输的落地方案 先抛结论:这事儿能成,但得用“定制化研发成熟组件适配”的组合拳。作为公司项目负责人,我刚带着团队啃完类似需求(…

张小明 2025/12/26 2:34:13 网站建设