学好偏导竟能追到心仪的妹子

????背景

我有一个朋友,他最近很苦恼,因为他最近正在追一个妹子,但是这个妹子是AI领域的大佬,多篇ICML,ICLR在手,情况不是很明朗。我问他怎么回事,他说妹子给我出了一道题:


其中 

,且

「求的偏导?」

"我做不出来呀,大概知道个什么维度相等的原则,具体怎么算我不会呀!"

"你直接冲就得了!"

"万一是劝退,朋友都做不了了!"

“也是,那我替你找找资料!”

看完这篇文章你将会收获到:

正确判定妹子的心意

且听我慢慢道来。

1 向量对向量的偏导计算

其中

由于每个中的元素对每个中的元素都要求偏导,因此结果肯定是个二维雅可比矩阵:

先考虑中的某一个元素对中的元素求偏导: 我们取:

由矩阵和向量的运算我们能够得到

展开的话,就成了:

现在直接变成了一维的求导了:

(是不是感觉下标是不是有某种关联????)

对!由上面的规律(你可以再求个再试试),容易得到:

那么雅可比矩阵的值就可以得到:

因此:

其中

我们可以用上面同样的方法得出来:

那么对偏导为:

最后:

2 向量对矩阵的偏导计算

首先要明确,一维的向量对二维的矩阵的偏导其结果必然是一个三维的矩阵  ,你想一下每一个都要对  求偏导,那么将会得到个偏导值,我们先不讨论怎么排列,只关注每个位置怎么求。

我们求,容易得到:

注意下的下标,是不是和上面一样有规律可循?

对了!能够发现式子的等式中,的列维度和的行维度是一样的(符合矩阵的运算规律),的列维度等于3,容易推出:

为了更好地表示,我们使用表示的三维偏导,其中:

注意到只有==时,偏导等于,其他都为0,因此:

因此,中实际的有效信息只有2维!这个可以手动验证。

3 矩阵对矩阵的偏导计算

现在3个元素都是矩阵,同样还是利用矩阵的计算方法,容易得到:

容易看出对来说只有a==c时,其偏导数的值不为0,即:

如果我们只考虑的第行和的第行,那么可以得到:

是不是就是公式(2)!

4 多个矩阵的偏导计算

链式法则

那对于像这样的,多个矩阵/向量如何求偏导呢? 我们可以使用链式法则, 假设 则:由链式法则能够得到:

若只考虑单个维度的话,能够得到:

有没有发现,中间的m是个向量,这不是很好求呀,我们把m拆成多个单维度的数:

由上面????的推导公式能够得到:

因此:

还有一种方法,就是将看成一个向量,直接应用之前推导出的公式,便可得到!

「所以至此,大家告诉我,我那个朋友应该冲么?????」

文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的Beyonce小姐姐

一定要备注【高清图】

????????????????????

➕我们的Beyonce小姐姐微信要记得备注【高清图】

来都来了,喜欢的话就请分享点赞在看三连再走吧~~~

<think>嗯,用户问学好了C语言能做什么。首先,我需要回顾C语言的特点和应用领域。C语言是面向过程的语言,接近硬件,执行效率高,所以常用于系统级开发。然后,我应该考虑用户可能的背景,可能是刚学习编程的新手,或者对编程感兴趣想了解C语言的实际应用的人。 接下来,我要列举C语言的主要应用场景。比如操作系统开发,像Unix、Linux都是用C写的。然后是嵌入式系统,单片机、物联网设备这些资源有限的环境需要高效的语言。接着是编译器、数据库、游戏引擎这些底层开发,C语言也很重要。还有高性能计算,比如科学计算和图形处理。此外,C语言作为基础,学习其他语言如C++、Java会更容易。 然后,我需要考虑用户可能的需求。他们可能想知道学完C语言后的职业方向,或者如何应用C语言技能。需要分点说明,结构清晰,让用户容易理解。同时,要避免使用专业术语过多,用通俗易懂的语言解释每个应用领域。 还要注意用户可能存在的误区,比如认为C语言已经过时,但实际上很多核心系统仍然依赖C语言。因此,需要强调C语言在底层开发中的不可替代性。另外,用户可能想知道学习C语言后的实际项目例子,可以举一些如开发小型操作系统、编写硬件驱动、游戏引擎优化等例子,增强说服力。 还要提醒用户,学好C语言后,可以更容易理解计算机的工作原理,比如内存管理、指针操作等,这对后续学习其他高级语言和深入计算机科学有很大帮助。最后,总结一下C语言的重要性,并鼓励用户坚持学习,打好基础。</think>学习C语言是计算机科学领域的重要基础,掌握它能为你打开多个技术方向的大门。以下是学好C语言后可以发展的领域及具体应用: --- ### 一、系统级开发 1. **操作系统开发** C语言是编写操作系统内核的首选语言,例如: - Unix、Linux内核的底层模块 - Windows内核的部分组件 - 实时操作系统(RTOS)如FreeRTOS 2. **嵌入式系统** 适合资源受限的硬件环境: - 单片机(如Arduino、STM32)程序开发 - 物联网设备(智能家居、传感器节点) - 汽车电子控制单元(ECU) --- ### 二、底层工具开发 1. **编译器与解释器** - 参与GCC、LLVM等编译器的开发 - 设计领域特定语言(DSL)的解析器 2. **数据库系统** - MySQL、SQLite等数据库内核优化 - 实现存储引擎或索引算法 --- ### 三、性能敏感型应用 1. **游戏引擎** - 物理引擎、渲染管线的底层优化(如Unity部分模块) - 高频交易系统 ```c // 示例:内存操作优化 void* memcpy_optimized(void* dest, const void* src, size_t n) { // 使用SIMD指令或汇编内联优化 } ``` 2. **科学计算** - 数值分析库(如BLAS、LAPACK) - 气象模拟、流体动力学计算 --- ### 四、硬件交互与驱动 1. **设备驱动开发** - 编写Linux内核模块 - 定制外设驱动(如显卡、USB控制器) 2. **协议栈实现** - TCP/IP协议栈开发 - 蓝牙、Zigbee等无线协议实现 --- ### 五、跨领域延伸能力 1. **学习其他语言的基石** - 理解C++的虚表机制、Rust的内存安全模型 - 掌握Java JNI、Python C扩展开发 2. **计算机体系结构理解** - 通过指针操作深入理解内存模型 - 实践缓存优化、CPU流水线调度 --- ### 六、实际项目方向建议 1. **入门级项目** - 实现内存分配器(malloc/free) - 开发简易Shell或文本编辑器 2. **进阶挑战** - 构建RTOS任务调度器 - 编写软渲染器(Software Renderer) --- ### 总结 C语言的价值不仅体现在直接应用上,更重要的是: - 培养对计算机资源的精细控制能力 - 建立扎实的调试与优化经验 - 为理解操作系统、编译原理等核心课程奠定基础 学好C语言后,你既可以选择深耕底层开发,也能快速扩展到其他技术领域,这种能力在物联网、自动驾驶、高性能计算等前沿领域尤为关键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值