Brief Intro of Deep Learning【李宏毅课程笔记-待完成】

从2006年李宏毅提出限制玻尔兹曼机用于初始化多层感知机,标志着深度学习的开端,到2015年ResidualNet的152层网络结构,深度学习经历了快速发展。本文探讨了深度模型的定义与结构设计,指出非深度模型向深度模型转变的过程等同于特征工程向网络设计的转变,并讨论了深度模型在特定问题上的适用性。

李宏毅

  • 2006, Restricted Boltzmann Machine. Complex. Used to initialize multi-layer perceptron (1980), to be called Deep Learning
  • Network -> function set
  • Deep -> many hidden layers
  • 2015, Residual Net, 152 layers.
  • Define the network structure <=> define a good function
  • Non-deep model -> deep model <=> feature engineering -> network design. 换句话说,如果问题能很容易地抽象feature,不像video或者audio的问题中,那么可能deep model不一定是个好的选择。
<think>嗯,用户想要查找瑞萨相关代码注释和取消注释的学习笔记。从用户提供的引用内容来看,引用[2]提到了瑞萨RA MCU的命名约定和软件结构,引用[3]则谈到开发环境搭建和错误排查的经验,但都没有直接涉及代码注释的具体操作方法。 用户应该是瑞萨MCU的初学者,可能在开发过程中遇到了需要批量注释/取消注释代码的情况。虽然引用中没有直接答案,但根据嵌入式开发环境的共性,可以推测: 1. 瑞萨主流IDE e² studio基于Eclipse,注释快捷键应该是通用的Ctrl+/或Ctrl+Shift+C 2. 用户可能更需要的是注释规范(如引用[2]提到的FSP命名约定),而不仅是操作技巧 考虑到用户引用[3]提到"开发环境搞好了50%到手",应该重点强调IDE操作和注释规范两个维度。另外用户之前似乎遇到过按键扫描代码理解困难(引用[1]),良好的注释确实能避免这类问题。 需要提醒用户注意瑞萨特有的注释要求:比如其FSP库要求函数注释必须包含@brief等doxygen标签(引用[2]隐含的规范)。对于初学者,可能更急需的是基础操作指导而非高级规范,所以回复要分层说明。 用户情绪上引用[3]显示出学习压力较大,回复要简洁实用。最后补充学习路径建议,因为引用[4]显示用户有查阅技术资料的习惯,可以提供瑞萨官方文档的查找路径。 </think>以下是针对瑞萨(Renesas)MCU开发中**代码注释与取消注释**的核心学习笔记,结合代码规范、开发工具实操和工程实践整理: --- ### 一、基础操作:IDE快捷键(以e² studio为例) 1. **单行注释** - 选中代码行 → `Ctrl + /`(Windows/Linux)或 `Cmd + /`(Mac) - 示例: ```c // if (temp != 0xf0) // 注释后此行失效 if (temp != 0xf0) // 原功能代码 [^1] ``` 2. **多行注释/取消** - 选中多行 → `Ctrl + Shift + /`(注释),`Ctrl + Shift + \`(取消注释) - 示例: ```c /* case 0xe0: num_keyboard = 1; break; // 行1列4 [^1] case 0xd0: num_keyboard = 5; break; // 行1列3 */ ``` --- ### 二、注释规范(遵循瑞萨FSP编码约定[^2]) 1. **功能注释** - 描述模块作用,使用`/** ... */`(Doxygen格式): ```c /** * @brief 初始化UART通信模块 * @param baud_rate: 波特率配置 * @retval 错误代码 (0=成功) */ int uart_init(uint32_t baud_rate); ``` 2. **行内注释** - 对齐在代码右侧,说明复杂逻辑: ```c temp = PORT->PIN; // 读取GPIO端口状态 if (temp & 0x80) // 检测最高位是否置位 ``` --- ### 三、调试场景下的注释技巧 1. **快速隔离代码块** 通过注释排除故障代码段: ```c // 可疑的按键检测逻辑(先禁用) // if (key_pressed) { // led_on(); // } ``` 2. **条件编译注释** 结合宏定义灵活启用/禁用功能: ```c #define DEBUG_MODE 1 // 1=启用调试代码 #if DEBUG_MODE log_data(); // 调试模式下记录数据 #endif ``` --- ### 四、工程实践建议 1. **注释与代码同步更新** - 修改代码时**必须**更新关联注释(如函数行为变更)[^2] 2. **避免冗余注释** - 劣质示例: ```c i++; // i增加1 ← 无意义注释 ``` - 优质示例: ```c i++; // 补偿时钟偏移量 ``` --- ### 五、常见问题解决 - **问题:** 注释后代码仍被执行? **原因:** 误用字符串分界符(如`"//"`出现在字符串内) **示例:** ```c char str[] = "https://domain.com"; // 此处的"//"不是注释! ``` - **问题:** 多行注释嵌套报错? **方案:** 改用条件编译`#if 0...#endif`禁用代码块: ```c #if 0 ... // 被禁用的代码段 #endif ``` --- ### 六、学习资源指引 1. 瑞萨官方文档: - *e² studio User Manual* → 搜索 "Commenting Code" 2. FSP编码规范: - *FSP Coding Guidelines*(重点阅读 2.3 Comment Style)[^2] 3. 调试技巧: - 参考瑞萨社区案例 *[RA MCU Debugging Tips]*(含注释辅助调试实战) > 注释是代码的导航图,尤其在嵌入式开发中,清晰的注释能大幅降低后期维护成本。建议结合瑞萨FSP示例工程(如`sci_uart_ep`)观察官方注释风格 [^2][^3]。 --- **相关问题:** 1. 如何在瑞萨开发环境中快速注释大段代码? 2. 瑞萨FSP框架对函数注释有哪些强制要求? 3. 注释代码时如何避免引入语法错误?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值