Python修养1 思想: 换行当; 缩进当{} 对象三属性 值: 可变/不可变 身份: 内存唯一地址,严格只读 类型( 可用type(you_want)来读取) 每个变量都相当于指向某个对象的引用 引用对象可变, 则可以通过变量修改 引用对象不可变,则只能让变量指向另一个新对象 关于注释: 单行# 多行command+/ 关于赋值的随意性 s1,s2,s4,s3=s4,s3,s2,s1 关于变量 不需声明, 使用前必须赋值 类型可变 没有double( 或者说double就叫float), 多了complex和tuple和dict, string叫str, 列表叫list ——类型名相当于类名 12a=str()b=1+2j 元组本身不可变, 但是⚠️其中可变对象元素仍可变 关于运算符 **表示幂运算 关于布尔类型 注意是True和False, 大小写有规范 0 空 str tuple list dist都相当于False ( 但不是等于) 12345678if not (): print (&q ...
杂记 记录比较不熟悉, 或者比较直观的理解 关于不熟的损失函数 1. Focal Loss (类不平衡场景) 直观理解 在目标检测(如检测图中的大楼)时,背景(负样本)的数量远多于目标(正样本)。传统的交叉熵损失中,大量简单的背景样本虽然单个损失小,但累加起来会淹没少量的困难样本。Focal Loss 通过给损失加一个“调节开关”:如果样本容易分类(预测概率 ppp 接近 1),就大幅降低它的权重;如果样本难分类,权重相对保持。 数学推导 标准的二分类交叉熵(Binary Cross Entropy, BCE)定义为: CE(p,y)={−log(p)if y=1−log(1−p)if y=0CE(p, y) = \begin{cases} -\log(p) & \text{if } y=1 \\ -\log(1-p) & \text{if } y=0 \end{cases} CE(p,y)={−log(p)−log(1−p)if y=1if y=0 定义 ptp_tpt 简化表达: pt={pif y=11−pif y=0 ⟹ CE(p, ...
c++特性 c++11特性 以下按照常用频次 + 新理解程度排序 Lambda表达式 shared_ptr auto关键字 右值引用和move语义 右值 move 移动构造函数 unordered_map 无序容器(哈希表), 插入删除查找时间复杂度O(1), 正则表达式 模板类型参数包和递归 {}统一初始化 基于范围的for循环 成员变量默认初始值 空指针nullptr decltype关键字 unique_ptr 万能引用和forward转发 万能引用T&& 多线程 c++14特性 二进制常量 返回值自动推断 auto Lambda表达式 make_unique c++17特性 std::any std::optional std::variant 结构化绑定 tuple 是c++11里开始引入的可以存放任意多个数据类型的数据的序列 if/switch初始化语句 CTAD 折叠表达式
pytorch指南 目录 [TOC] 思维导图 container处分类笔误 细节 一、张量 (Tensors) 1. 创建 (Creation) 12345678910import torchx = torch.tensor([1, 2, 3]) # 从列表创建x = torch.zeros(2, 3) # 全0张量x = torch.ones(2, 3) # 全1张量x = torch.randn(2, 3) # 标准正态分布x = torch.rand(2, 3) # 均匀分布 [0,1)x = torch.arange(0, 10, 2) # 序列 [0,2,4,6,8]x = torch.linspace(0, 1, 5) # 等间距5个点 [0,0.25,0.5,0.75,1]x = torch.eye(3) # 单位矩阵 ...
NumPy指南 零、目录&思维导图 [TOC] 一、基础导入 导入NumPy库(import numpy as np)1import numpy as np 二、数组(ndarrays) 2.1 数组创建 从列表创建数组(np.array())1arr = np.array([1, 2, 3]) 等差数组(np.arange())1arr = np.arange(0, 10, 2) # 生成[0,2,4,6,8] 等间隔数组(np.linspace())1arr = np.linspace(0, 1, 5) # 生成5个0到1之间的等间隔数 全零数组(np.zeros())1arr = np.zeros((2, 3)) # 2行3列的全零数组 全一数组(np.ones())1arr = np.ones((3, 3)) # 3行3列的全一数组 0-1随机数组(np.random.rand())1arr = np.random.rand(2, 2) # 2行2列的随机数组 2.2 数组属性 维度数(ndim)1arr.ndim # ...
利用 launchd 实现 Hexo 博客定时自动推送 零、 选择工具:Crontab vs Launchd 在 macOS 上实现自动化推送,通常有两种主流选择: crontab Launchd 1. Crontab (传统的 Unix 定时任务) 操作指令: 在终端输入 crontab -e 进入编辑界面。 添加一行配置(例如每天 22:30 执行): 30 22 * * * /bin/bash /Users/focus/Library/LaunchAgents/auto_push.sh >> /tmp/hexo_cron.log 2>&1 保存并退出即可。 特点: 语法极其简单,配置迅速。但它的致命缺点是不支持“补跑”。如果 22:30 你的 Mac 盖上了盖子处于休眠状态,crontab 任务就会直接跳过,直到第二天同一时间。 2. Launchd (Apple 官方) 特点: 虽然 .plist 的 XML 格式比 crontab 复杂,但其拥有 StartCalendarInterval 机制。如果设定时间点电脑在休眠,l ...
String库 s.find('a') 返回的是位置下标(std::string::size_type,无符号整数),而 std::find(s.begin(), s.end(), 'a') 返回的是迭代器。整数和迭代器类型不匹配,不能用 == 比较。 [TOC] 思维导图 简略版 详细版 语法 string类要包含头文件 #include string类是一个模板类定义如下: typedef basic_string<char> string; 初始化&赋值: 构造初始化:string s1(“Hello”); string s2(8,‘x’); string s3=“March”; string s4; assign(s):全串赋值 assign(s,pos,n):从s的pos位置取n个字符赋值 单字符赋值:s=‘a’ 正确例子: 12345string s1("Hello"),s2(8,'x'),s3;s3.assign(s1);s3.assign(s1,1,3 ...
STL初步 泛型程序设计(generic programming) 设计思想 C++语言的核心优势之一 —— 软件的重用 C++中有两个方面体现重用: 面向对象的思想:继承和多态,标准类库 泛型程序设计的思想: 模板机制 标准模板库 STL 模板机制 将一些常用的数据结构(比如链表,数组,二叉树)和算法(比如排序,查找)写成模板 以后不论数据结构里放的是什么对象,算法针对什么样的对象 → 都不必重新实现数据结构,重新编写算法 标准模板库(Standard Template Library) 常用数据结构和算法的模板的集合 无需写过多的标准数据结构和算法 同时可获得非常高的性能 STL的基本概念 容器:可容纳各种数据类型的通用数据结构,是类模板 迭代器:可用于依次存取容器中元素,类似于指针 普通的C++指针就是一种迭代器 算法:用来操作容器中的元素的函数模板 sort() 来对一个数组中的数据进行排序 find() 来搜索一个数组中的对象 算法本身与他们操作的数据的类型无关, 因此他们可以在从简单数组到高度复杂容器的任何数据结构上 ...
Debug记录 注:记录自己在编程时犯的各种错误,以便未来快速编程(不痛哭流涕) 2026/04/11 一、语法 & 基础概念类错误 这是最底层的问题,会导致编译直接失败或逻辑完全偏离。 迭代器解引用的「运算符优先级」错误 错误写法:*it.first 正确写法:(*it).first 或 it->first 原因:. 的优先级高于 *,不加括号会先访问迭代器本身的成员(不存在)。 multimap 插入函数参数错误 错误写法:l.insert(键, 值) 正确写法:l.insert({键, 值}) 或 l.emplace(键, 值) 原因:insert 只接受一个键值对对象(pair),不接受两个独立参数。 自定义比较器的参数类型完全错误 错误写法:bool operator()(pair<ll,ll> a, pair<ll,ll> b) 正确写法:bool operator()(ll a, ll b) (如果 Key 是 ll) 原因:multimap 的比较器只比较 Key(键),不比较整个键值对。 比较器 ...



























