当前位置: 首页 > news >正文

学习日记day56

Day56_0113

专注时间:目标是:5h30~6h。实际:4h20min

每日任务:饭后的休息(25min),学习间歇的休息(15min)都用手表计时器来监督

40min=二刷1道力扣hot100(如果是hard,只做一道就好完成情况及时长:?1h35min);【学习资源:PyTorch官方文档:https://docs.pytorch.ac.cn/tutorials/beginner/basics/intro.html】1.5h=PyTorch工程实操(完成情况及时长:0把第二个pytorch网页的“局部禁用梯度计算”看懂,就去看第一个pytorch网页);1h=周志华机器学习(完成情况及时长:50min+6);1.5h+(claude的RL4LLM学习路径,时长:40min+50+25)

学完机器学习,然后是深度学习。学完PyTorch,之后是Transformer与大模型架构(见Gemini3pro生成的阶段2)。学快一点。准备一个GitHub Repo把所有手撕过的算法整理进去,这会是最好的复习资料。

必须熟记的API、最简洁的GPT实现、带注释的Transformer实现、推荐系统模型库(包含主流模型实现)还有“Let's build GPT”系列学习视频见Claude的第20页。冰哥听讲座,老师说:GPT是最好的老师,不需要其他家教,清华学生智商120,GPT有140。多用大模型来帮助学习。

学习内容:

总结与心得:学习过程中感觉claude说的真对“不要死磕理论,而是先上手代码,跑通之后再去学细节”。如果先学理论,比如tensor,等代码里真正接触到tensor时候已经忘光了理论知识。目前这个学习效率非常高啊,机器学习和RL4LLM都在有序推进,但是专注时长不够,不然能同时学习pytorch了!还要努力。专注时间进步了,但是早上起来和洗澡回来的时间没用好,刷抖音了。

《105.从前序与中序遍历序列构造二叉树》

# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution(object): def buildTree(self, preorder, inorder): """ :type preorder: List[int] :type inorder: List[int] :rtype: Optional[TreeNode] """ #注意这个解法只适用于无重复值的二叉树 #遇到了三个问题:找元素索引的方法错误、数组切片范围不确定、对返回值的正确性有疑问。 #审题审错了,是前序和中序 #找index: list.index(val) if not preorder or not inorder: return None val = preorder[0] mid = inorder.index(val) root = TreeNode(val) #数组切片范围,尤其是node.right时候的,想不出来,因为知道要去划分preorder但是不知道怎么写 #因为没想到用*元素数量*来划分 root.left = self.buildTree(preorder[1:mid+1],inorder[:mid]) root.right = self.buildTree(preorder[mid+1:],inorder[mid+1:]) return root

学习defaultdict(int):

```python

# 导入Python标准库collections中的defaultdict类

# defaultdict是dict的子类,用于解决普通字典访问不存在的键时抛出KeyError的问题

from collections import defaultdict

# 创建一个defaultdict实例,指定默认工厂函数为int

# 1. defaultdict的核心特性:当访问不存在的键时,会自动调用默认工厂函数生成一个默认值并赋值给该键

# 2. 这里int作为默认工厂函数,无参数调用时返回0(int()的默认返回值)

# 3. 变量名cnt是count的缩写,通常用于表示"计数器",符合该变量的使用场景

# 4. 该对象兼具字典的所有特性,同时新增了默认值自动生成的功能

cnt = defaultdict(int)

```

### 补充说明:

1. **默认值逻辑**:当执行 `cnt['new_key']` 时,若 `'new_key'` 不存在,会自动执行 `int()` 生成默认值 `0`,并将 `'new_key': 0` 存入字典

2. **常见用途**:用于统计元素出现次数(如统计字符串中字符频率、列表中元素频次等)

3. **与普通dict的区别**:普通dict需通过 `dict.get(key, 0)` 手动指定默认值,而defaultdict会自动处理

4. **扩展场景**:若将默认工厂函数改为 `list`,则默认值为空列表 `[]`,可用于分组统计等场景

《437.路径总和3》

from collections import defaultdict from typing import Optional # 定义二叉树节点(题目中已给出,这里补充方便理解) class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right class Solution: def pathSum(self, root: Optional[TreeNode], targetSum: int) -> int: # 哈希表:key=前缀和,value=该前缀和出现的次数 cnt = defaultdict(int) # 初始化:前缀和为0的情况出现1次(处理从根节点开始的路径) cnt[0] = 1 ans = 0 # 最终答案,统计符合条件的路径数 # 递归函数: # node:当前遍历的节点 # s:从根节点到当前节点的父节点的前缀和(当前节点值还没加进去) def dfs(node: Optional[TreeNode], s: int) -> None: # 递归终止条件:节点为空,直接返回 if node is None: return # 声明ans是外部函数的变量(非局部变量),否则无法修改 nonlocal ans # 把当前节点值加入前缀和,得到「根到当前节点」的前缀和 s += node.val # 核心逻辑: # 找有多少个前缀和等于 s - targetSum,这就是以当前节点为终点的符合条件的路径数 # 比如s=10,targetSum=5,那么找前缀和为5的次数,就是有多少个起点能到当前节点和为5 ans += cnt[s - targetSum] # 把当前节点的前缀和加入哈希表(供子节点使用) cnt[s] += 1 # 递归遍历左子树 dfs(node.left, s) # 递归遍历右子树 dfs(node.right, s) # 回溯:撤销当前前缀和的计数(因为遍历完当前节点的子树后,要回到父节点,不能影响其他分支) cnt[s] -= 1 # 从根节点开始遍历,初始前缀和为0(根节点的父节点不存在,前缀和为0) dfs(root, 0) return ans
class Solution: def pathSum(self, root: Optional[TreeNode], targetSum: int) -> int: # 统计以node为起点,路径和等于target的数量 def count_path(node, target): if not node: return 0 # 当前节点值等于target,算1条;否则继续找 res = 1 if node.val == target else 0 # 递归找左子树(剩余目标:target - node.val) res += count_path(node.left, target - node.val) # 递归找右子树 res += count_path(node.right, target - node.val) return res if not root: return 0 # 总数量 = 以当前节点为起点的数量 + 左子树所有节点为起点的数量 + 右子树所有节点为起点的数量 total = count_path(root, targetSum) total += self.pathSum(root.left, targetSum) total += self.pathSum(root.right, targetSum) return total
http://www.jsqmd.com/news/243972/

相关文章:

  • 革新肺结节检测:Lung-DETR,用Transformer变体高效解决稀疏异常检测难题
  • 吐血推荐!8款AI论文工具测评,本科生写毕业论文必备
  • 易企秀源码系统,轻松对接CRM、ERP及内部数据库
  • 千万不能错过!揭秘运城最强品牌策划团队,效果震撼超乎想象!
  • 攻克三维肺部结节检测:基于3D Faster R-CNN实现高精度智能辅助诊断系统(全流程解析)
  • 基于SpringBoot的公共交通路线应用系统设计与实践
  • 定义新范式:FedU-Net——在隐私保护下实现多模态脑肿瘤精准分割
  • 解决网站禁止复制功能
  • 五步搞定YOLO-World模型训练:数据、标注、配置、训练、部署全指南
  • 中国电网Java面试被问:Dubbo的服务目录和路由链实现
  • 通透理解Mamba:三步实现从理论推导到手撕代码,一行不落的实战保姆指南
  • 手把手搞定毕设:基于YOLOv8从0到1构建检测系统,全流程详解(环境→训练→部署→答辩)
  • 6D姿态估计落地难?拆解DenseFusion核心模块PoseRefineNet,附可复现的训练代码与损失函数详解
  • 一站式掌握TensorRT量化:从PTQ到QAT实战,实现模型推理速度飞升
  • 艺术与科技结合:基于YOLOv5的艺术展品识别系统,一个完整可运行的毕业设计项目
  • 毕设做物体检测无从下手?YOLOv8项目一条龙教程,从搭建到上线,让你少走弯路
  • Nginx 配置实战:从摸鱼到部署,手把手教你搞定生产级配置
  • 保姆级教程:手把手教你训练自己的YOLO-World,轻松实现定制目标检测
  • 三步完成毕设:用YOLOv5实现艺术品识别(从数据采集到模型部署,轻松落地与展示)
  • 手把手毕设指南:基于YOLO的电动车识别(含数据集+代码),从环境搭建到模型部署上线
  • Jest和Mocha对比:两者之间有哪些区别?
  • 手把手实现Lung-DETR:从理论到代码,逐模块解析DETR在稀疏肺结节检测中的创新实战
  • AbMole丨C12-200:高性能可电离脂质在mRNA疫苗递送领域的应用
  • 在JSP中如何编写大附件上传的完整示例?
  • ALS 算法详解:怎么解开“推荐系统”的死结?
  • 手把手实现3D肺结节检测:基于Faster R-CNN的从CT处理、训练到部署的五步代码级实战与避坑指南
  • Python_uniapp-微信小程序的员工宿舍报修系统
  • JAVA web页面中大文件分块上传的示例步骤是什么?
  • SGD 算法详解:蒙眼下山的寻宝者
  • 【北京工业大学主办 | SPIE出版(ISSN、ISBN双号皆备) | 组委成员涵盖10+个国家,3位IEEE高级会员外专担任会议主讲】2026进化算法和智能控制国际研讨会(ISEAIC 2026)