<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qiy_icbc的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qiy_icbc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qiy_icbc]]></copyright><item><title><![CDATA[爱因斯坦求和约定（Einstein Summation Convention）及einsum() 函数]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/165244171</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/165244171</guid><author>qiy_icbc</author><pubDate>Sun, 13 Sep 2026 22:27:52 +0800</pubDate><description><![CDATA[爱因斯坦求和约定通过重复下标隐含求和，简化张量运算。einsum()函数是其工程实现，支持多维张量收缩、矩阵乘、点积、迹、外积及批量操作，广泛用于深度学习中的注意力机制与匹配模型。核心优势在于语法简洁、可读性强，且支持自动微分（PyTorch/TensorFlow），但复杂表达式性能可能不如专用算子。三者语法一致，但自动微分、优化与广播行为有差异，深度学习推荐使用PyTorch或TensorFlow版本。]]></description><category></category></item><item><title><![CDATA[机器学习中，相同的概念的不同术语表达，如，slope ↔ weight、intercept ↔ bias]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/164717923</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/164717923</guid><author>qiy_icbc</author><pubDate>Wed, 09 Sep 2026 09:51:45 +0800</pubDate><description><![CDATA[本文梳理机器学习中统计学与深度学习术语：slope/weight、loss/cost、MLE可算等价；但L2正则≠weight decay、交叉熵≠NLL、Linear层实为仿射变换、embedding≠隐变量。提醒注意工程命名与数学定义差异。]]></description><category></category></item><item><title><![CDATA[科普：Python 的高阶函数，你熟悉的装饰器就是高阶函数]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/164500069</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/164500069</guid><author>qiy_icbc</author><pubDate>Mon, 07 Sep 2026 20:56:40 +0800</pubDate><description><![CDATA[高阶函数以函数为一等对象为前提，指接收函数作参数或返回函数的高阶函数，分三类：接收函数参数（如map、apply）、返回函数（闭包）、两者兼具（装饰器）。与C++裸函数指针不同，Python函数对象自带闭包环境，能携带捕获变量。嵌套函数不等于高阶函数，二者可组合为四种情况。]]></description><category></category></item><item><title><![CDATA[科普：Pandas 中的“迭代器与生成器”（如，df.iterrows()：按行迭代，迭代器）]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/164326080</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/164326080</guid><author>qiy_icbc</author><pubDate>Thu, 03 Sep 2026 10:22:07 +0800</pubDate><description><![CDATA[Pandas 对象支持迭代器协议，并提供生成器方法避免全量载入内存。Series 直接迭代值，items() 产出(索引,值)；DataFrame 直接迭代列名，items()按列、iterrows()按行返回Series副本，存在类型漂移且性能。大数据集应优先向量化。]]></description><category></category></item><item><title><![CDATA[科普：Python迭代器（Iterator）、生成器（Generator）]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/164288373</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/164288373</guid><author>qiy_icbc</author><pubDate>Wed, 02 Sep 2026 09:36:40 +0800</pubDate><description><![CDATA[本文区分迭代器与生成器：迭代器需实现__iter__()和__next__()，无元素时抛StopIteration；生成器是迭代器的子集，通过yield实现，两者皆惰性求值、一次性消费。还厘清了可迭代对象（如列表）非迭代器，以及生成器与普通迭代器的异同。]]></description><category></category></item><item><title><![CDATA[科普：Python中的生成器——带`yield`的函数]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/164154121</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/164154121</guid><author>qiy_icbc</author><pubDate>Fri, 28 Aug 2026 23:12:09 +0800</pubDate><description><![CDATA[# 摘要
本文围绕Python生成器展开讲解。生成器依靠`yield`实现，遵循按需惰性产出，迭代时才生成数据，无需一次性将全部结果载入内存，适合大数据处理，`kf.split(df)`便是典型应用。生成器对象仅可遍历一次，遍历后直接耗尽，不支持下标索引；通过`list()`可把生成器转为普通列表，实现重复使用，但会占用内存。文中对比生成器与普通`return`函数的差异，介绍生成器表达式、文件迭代等常见使用场景，同时区分迭代器与生成器概念。结合工程案例说明其内存优势，也梳理函数除`retur]]></description><category></category></item><item><title><![CDATA[科普：pandas 时间偏移别名：ts.resample(“5Min“).sum()]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/164066018</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/164066018</guid><author>qiy_icbc</author><pubDate>Tue, 25 Aug 2026 22:25:02 +0800</pubDate><description><![CDATA[ts.resample("5Min").sum()中，参数"5Min"看上去很特别，你知道它的意思么？本文专门分析一下。]]></description><category></category></item><item><title><![CDATA[科普：pandas中groupby + transform]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/164003498</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/164003498</guid><author>qiy_icbc</author><pubDate>Sun, 23 Aug 2026 22:05:09 +0800</pubDate><description><![CDATA[本文介绍了Pandas中groupby与transform的组合操作，对比了三种常见写法及其差异。关键点包括：1) transform在聚合后保留原表行数，将分组统计值广播到组内各行；2) 推荐使用groupby(f).transform('size')统计分组行数，避免缺失值导致的错误；3) 通过示例展示了不同写法在有无缺失值场景下的表现差异，说明transform('size')的稳健性。文章还解析了transform与groupby-agg+merge的等价性，并警示了均值编码的标签泄露风险。]]></description><category></category></item><item><title><![CDATA[科普：从时间序列数据到LSTM多步时序预测]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/163706932</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/163706932</guid><author>qiy_icbc</author><pubDate>Wed, 12 Aug 2026 22:56:06 +0800</pubDate><description><![CDATA[本文探讨了LSTM模型处理时间序列数据时的关键难点——样本构造问题。通过滑动窗口法将原始时序数据转换为训练样本：设定历史窗口长度T=3和预测步数H=4，每次滑动生成一个样本（输入为T天的特征，输出为后续H天的预测值）。文章详细展示了数据集的构建过程（10个样本，每个含2个特征），并比较了两种训练方案：方案A采用多个独立单输出LSTM模型分别预测各时间步（需训练4个模型），而方案B使用单个多输出LSTM模型一次性预测全部时间步（效率更高但存在梯度竞争）。]]></description><category></category></item><item><title><![CDATA[科普：由几个函数形成的“复合函数”：Series.map(dict(zip(A,B)))]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/163645619</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/163645619</guid><author>qiy_icbc</author><pubDate>Mon, 10 Aug 2026 21:55:30 +0800</pubDate><description><![CDATA[本文介绍Pandas中利用Series.map(dict(zip(A,B)))实现列映射的高效方法。该方法通过将两列数据构建为字典映射关系（dict(zip(A,B))），再使用Series.map()进行批量查表，可快速完成编码到属性的转换。文章对比了zip与set_index+to_dict两种字典构建方式，分析了Series.map()的两种执行分支（字典与函数），并指出其性能优势（Cython实现）和容错特性（缺失值返回NaN）。文末通过思考题强调传入字典与lambda函数的差异。]]></description><category></category></item><item><title><![CDATA[科普：Python 的内置排序函数sorted(...)中的key( DSU机制)]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/163544732</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/163544732</guid><author>qiy_icbc</author><pubDate>Thu, 06 Aug 2026 23:44:46 +0800</pubDate><description><![CDATA[Python的sorted()函数采用DSU（装饰-排序-去装饰）模式实现高效排序：1）先为每个元素计算key值并打包成元组；2）基于key值进行排序；3）去除key值返回原始元素。这种机制确保key函数仅被调用N次而非O(N log N)次，显著提升性能。除sorted()外，list.sort()、min()/max()等内置函数也采用相同机制。文章通过示例代码展示了手动DSU与自动DSU的等效性，并验证了key函数的调用次数，最后列举了支持DSU机制的常见Python函数和库。]]></description><category></category></item><item><title><![CDATA[科普：Pandas unstack生成宽表]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/163376556</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/163376556</guid><author>qiy_icbc</author><pubDate>Fri, 31 Jul 2026 23:25:23 +0800</pubDate><description><![CDATA[Pandas中的stack()和unstack()函数用于多级索引DataFrame的形态转换：unstack将行索引展开为列（长表变宽表），stack将列索引压缩为行索引（宽表变长表）。本文通过门店商品促销数据示例演示了这两个函数的用法，包括处理缺失值和清理多层列索引等常见问题。两者互为逆运算，特别适用于时序数据处理场景，其中unstack得到的宽表便于构建时序窗口，而stack后的长表适合特征工程。使用时需注意索引层级选择和列索引清理等细节。]]></description><category></category></item><item><title><![CDATA[科普：np.log1p 与 np.expm1及其它]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/163345488</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/163345488</guid><author>qiy_icbc</author><pubDate>Thu, 30 Jul 2026 23:19:44 +0800</pubDate><description><![CDATA[本文总结了NumPy中对数与指数函数的用法，重点对比了np.log1p与np.log的差异。np.log1p（ln(1+x)）支持x≥-1的输入，特别适合处理含零值的数据（如销量），数值精度更高。其逆运算是np.expm1（e^x-1），二者必须配对使用以避免误差。其他对数函数如log10/log2多用于特定领域。关键建议：计数类数据首选log1p+expm1组合，严格正数可用log，需注意避免逆变换错误、零值溢出和重复变换等常见问题。]]></description><category></category></item><item><title><![CDATA[科普：Lambda匿名函数与def普通函数]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/163345233</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/163345233</guid><author>qiy_icbc</author><pubDate>Thu, 30 Jul 2026 22:59:29 +0800</pubDate><description><![CDATA[本文系统对比Python中三元表达式、lambda匿名函数与def普通函数的区别及适用场景。三元表达式用于单行条件赋值，lambda适合单行临时回调，而def函数适用于多行逻辑、复用需求及文档注释。文章通过能力对比表和典型示例阐明三者的边界选择规范：简单赋值用三元表达式；一次性简单逻辑用lambda；复杂逻辑、复用需求和异常处理必须用def函数。同时指出常见误区，强调工程代码应优先使用def以保证可维护性，避免滥用lambda。核心原则是根据代码复杂度、复用需求和可读性选择合适工具。]]></description><category></category></item><item><title><![CDATA[Keras深度学习训练范式：构建模型 （Build）→ 配置训练规则 （Compile）→ 执行训练（Fit） + 回调控制(Callback）]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/163282487</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/163282487</guid><author>qiy_icbc</author><pubDate>Tue, 28 Jul 2026 22:12:55 +0800</pubDate><description><![CDATA[本文对比了主流深度学习框架（TensorFlow/tf.keras、PyTorch、PyTorch Lightning、PaddlePaddle）的训练范式实现差异。Keras采用独特的"build→compile→fit+callbacks"三部曲，通过高层封装简化开发流程；原生PyTorch则需手动编写训练循环，灵活性更高但代码量大；PyTorch Lightning在易用性和灵活性间取得平衡。文章指出Keras虽然简洁但存在底层控制力不足、调试复杂度高等局限，而PyTorch更适合前沿算法研究和定制化]]></description><category></category></item><item><title><![CDATA[神经网络：业务分层 vs 网络分层]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/163055722</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/163055722</guid><author>qiy_icbc</author><pubDate>Mon, 20 Jul 2026 22:31:34 +0800</pubDate><description><![CDATA[本文区分了神经网络模型中"业务分层"与"网络分层"的概念差异及应用场景。业务分层是从功能角度将多个网络层聚合为完成特定任务的模块，用于项目沟通和代码封装；网络分层则是框架中实际执行运算的最小单元，用于参数调优和问题排查。二者是一对多的包含关系：一个业务分层包含若干网络层，且遵循固定堆叠范式。文中以LSTM客流预测模型为例展示了三层业务分层（时序提取、特征映射、特征压缩）与9个网络层的对应关系，并指出这种分层方法能提升模型可读性和复用性，同时保持底层调试能力。]]></description><category></category></item><item><title><![CDATA[Python 的链式调用：一连串的“点”调用]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/163024986</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/163024986</guid><author>qiy_icbc</author><pubDate>Sun, 19 Jul 2026 22:57:49 +0800</pubDate><description><![CDATA[Python链式调用通过方法返回实例实现多步操作串联，但需注意四大规则：1）方法必须返回对象（否则链断裂）；2）圆括号包裹可自动换行；3）执行顺序从左到右；4）返回类型需兼容后续方法。推荐圆括号包裹法提升可读性，避免inplace=True和类型不匹配等陷阱。工程实践中应控制链长、统一格式、添加注释，超5步操作建议拆解。自定义类只需方法返回self即可支持链式调用。合理使用链式能提升代码简洁性，但需警惕调试困难和类型错误等问题。]]></description><category></category></item><item><title><![CDATA[科普：Pandas 索引器 loc 与 iloc 的编程思维]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/162978209</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/162978209</guid><author>qiy_icbc</author><pubDate>Fri, 17 Jul 2026 22:57:53 +0800</pubDate><description><![CDATA[Pandas索引器loc与iloc核心差异解析 本文深入剖析Pandas中loc和iloc两种索引器的本质区别与应用场景。loc基于标签寻址，采用声明式编程思维，代码贴合业务语义，特别适合时间序列和条件筛选；iloc基于位置寻址，遵循命令式编程思维，直接操作底层存储结构。关键区别在于：loc面向业务语义（左闭右闭区间），iloc面向物理存储（左闭右开区间）。文章通过销售数据案例演示了loc在业务查询、区间切片和布尔筛选中的优势，以及iloc在精准位置控制和负索引取值的适用场景]]></description><category></category></item><item><title><![CDATA[科普：Gazebo中仿真小车的键盘控制]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/162163781</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/162163781</guid><author>qiy_icbc</author><pubDate>Sun, 21 Jun 2026 09:46:26 +0800</pubDate><description><![CDATA[本文介绍了在Gazebo仿真中通过键盘控制小车的两种编码方案。Qt功能键编码（如方向键对应16777xxx大数）和ASCII码（如字母I对应73）不可混用。通过启动仿真和监听/keyboard/keypress话题可验证键值。提供了两种控制方案：方案A使用方向键或数字小键盘控制运动，方案B使用字母键（如I/J/L）控制。控制代码插件可放置在<world>标签下作为全局系统插件，独立于特定模型，适用于多小车控制场景。]]></description><category></category></item><item><title><![CDATA[科普：机器人项目中的描述文件SDF 和 URDF 对比]]></title><link>https://blog.youkuaiyun.com/qiy_icbc/article/details/162088195</link><guid>https://blog.youkuaiyun.com/qiy_icbc/article/details/162088195</guid><author>qiy_icbc</author><pubDate>Thu, 18 Jun 2026 09:34:13 +0800</pubDate><description><![CDATA[URDF与SDF是机器人仿真中两种核心描述格式，分别服务于ROS和Gazebo生态。URDF专注描述单个机器人本体（连杆、关节、传感器），采用XML结构，兼容ROS工具链但缺乏物理仿真能力；SDF则定义完整仿真世界（环境、多机器人、物理引擎、插件），是Gazebo原生格式。两者在基础刚体标签（<link>、<joint>）上语义一致但语法细节不同，高阶功能互不兼容。实际开发中需配合使用：URDF描述机器人本体，SDF构建仿真场景。]]></description><category></category></item></channel></rss>