icoa-cli 2.19.421 → 2.19.422
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/ai4ctf.js +1 -1
- package/dist/commands/ctf4ai-demo.js +1 -1
- package/dist/commands/ctf4vla.js +1 -1
- package/dist/commands/exam.js +1 -1
- package/dist/commands/sprint.js +1 -1
- package/dist/data/sprint-cards.json +81 -54
- package/dist/data/sprint-tasks.json +81 -27
- package/package.json +1 -1
package/dist/commands/sprint.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{existsSync as o,mkdirSync as e,readFileSync as n,writeFileSync as t}from"node:fs";import{dirname as s,join as
|
|
1
|
+
import{existsSync as o,mkdirSync as e,readFileSync as n,writeFileSync as t}from"node:fs";import{dirname as s,join as a}from"node:path";import{fileURLToPath as r}from"node:url";import chalk from"chalk";import{getConfig as l}from"../lib/config.js";import{getMainRl as c}from"../lib/main-rl.js";import{logCommand as i}from"../lib/logger.js";let g=!1;export function isSprintActive(){return g}const y=s(r(import.meta.url)),p=a(process.env.HOME||".",".icoa"),d=a(p,"sprint-state.json"),u={"T-torch":"裸 torch:手写 attention / causal mask / perplexity","T-umap":"降维当特征提取器,不是画图工具","T-lora":"peft LoRA 参数高效微调","T-librosa":"音频特征流水线:mel / MFCC → 定长向量"},h=["",chalk.bold.cyan(" ASTANA 2027"),chalk.gray(" — 给还没出发的你"),"",chalk.white(" 草原的风从额尔齐斯河吹到阿斯塔纳的时候,会带着一点雪的味道。"),chalk.white(" 你还没去过那里。但那里已经有一个座位,写着你的名字。"),"",chalk.white(" 你现在坐在屏幕前,离比赛还有几天。"),chalk.white(" 你可能会想:几天能改变什么?"),"",chalk.white(" 足够让一个人从「看着题发呆」变成「看到题就知道该拆哪一层」。"),chalk.white(" 足够让手指记住 import torch 之后该敲什么。"),chalk.white(" 足够让你在比赛那天早上醒来时,不再害怕。"),"",chalk.bold.yellow(" M")+chalk.white(" —— 你总是第一个说「我先试试」的那个。别停。"),chalk.bold.yellow(" V")+chalk.white(" —— 你总是问「为什么是这样」的那个。继续问。"),chalk.bold.yellow(" A")+chalk.white(" —— 你总是在别人放弃时还在改最后一版的那个。改下去。"),"",chalk.white(" 你们三个人,一个人是一条腿走路,三个人是奔跑。"),"",chalk.white(" 你们要面对的不是一场考试,是一次证明:"),chalk.bold.white(" 中国的高中生,可以在 AI 的赛场上,和世界站在同一排。"),"",chalk.white(" 而 2027 年的阿斯塔纳,是我们下一个约定。"),"",chalk.gray(" 现在,把这行字关掉,去做第 1 题。"),chalk.gray(" — 熊猫教练"),""];function m(e){const n=[a(y,"..","data",e),a(y,"..","..","src","data",e)];for(const e of n)if(o(e))return e;return n[0]}function f(o){try{e(p,{recursive:!0}),t(d,`${JSON.stringify(o,null,1)}\n`)}catch{}}function w(o,e){return(l().language||"en").toLowerCase().startsWith("zh")?o:e}function b(o){return"★".repeat(Math.max(1,Math.min(5,o||3)))}function $(o,e){const n=new Set(e.done),t=new Set(e.opened);console.log(),console.log(chalk.bold.cyan(w(" ⚔ IOAI 2026 · 四工具冲刺"," ⚔ IOAI 2026 · four-tool sprint"))+chalk.gray(` ${w("已攻克","cleared")} ${n.size} / ${o.length}`));const s=new Map;for(const e of o)s.has(e.bullseye)||s.set(e.bullseye,[]),s.get(e.bullseye)?.push(e);for(const[o,e]of s){console.log(),console.log(chalk.bold.white(` ${o}`)+chalk.gray(` — ${u[o]||""}`));for(const o of e){const e=n.has(o.seq)?chalk.green("✓"):t.has(o.seq)?chalk.yellow("◐"):chalk.gray("⬜");console.log(` ${e} ${chalk.bold.white(String(o.seq).padStart(2))} `+chalk.white(o.title.slice(0,34).padEnd(34))+chalk.gray(b(o.difficulty).padEnd(5))+chalk.gray(o.needs_gpu?" ⚡":" ")+chalk.gray(` ${o.data_mb}M`)+("nodata"===o.status?chalk.gray(w(" · 只读思路"," · read-only")):""))}}console.log(),console.log(chalk.gray(" ")+chalk.cyan("open <n>")+chalk.gray(w(" 看题 · "," view · "))+chalk.cyan("done <n>")+chalk.gray(w(" 标记攻克 · "," mark cleared · "))+chalk.cyan("ai")+chalk.gray(w(" 问 Gemma · "," ask Gemma · "))+chalk.cyan("back")+chalk.gray(w(" 退出"," leave"))),console.log(chalk.gray(w(" ⬜ 没看过 ◐ 看过没做完 ✓ 攻克"," ⬜ unseen ◐ opened ✓ cleared"))),console.log()}function k(o,e){const n=[];let t="",s=0;for(const a of o){const o=/[ -鿿-]/.test(a)?2:1;s+o>e&&(n.push(t),t="",s=0),t+=a,s+=o}return t&&n.push(t),n}export async function runSprint(){i("sprint");const o=function(){try{const o=JSON.parse(n(m("sprint-tasks.json"),"utf8")),e=Array.isArray(o?.tasks)?o.tasks:[];try{const o=JSON.parse(n(m("sprint-cards.json"),"utf8")),t=new Map((o.cards||[]).map(o=>[o.seq,o]));for(const o of e){const e=t.get(o.seq);e&&Object.assign(o,{star:e.star,trap:e.trap,action:e.action,hint:e.hint,meta:e.meta})}}catch{}return e.sort((o,e)=>o.seq-e.seq)}catch{return[]}}();if(0===o.length)return console.log(),console.log(chalk.yellow(" 冲刺题单还没装进这个版本。")),console.log(chalk.gray(" 升级后再试:")+chalk.cyan("npm install -g icoa-cli@latest")),void console.log();const e=function(){try{const o=JSON.parse(n(d,"utf8"));return{who:o.who||"",opened:o.opened||[],done:o.done||[]}}catch{return{who:"",opened:[],done:[]}}}();if(0===e.opened.length&&0===e.done.length)for(const o of h)console.log(o);e.who||(e.who=""),$(o,e);const t=c();if(null===t)return;const s=t.listeners("line").slice();t.removeAllListeners("line");const a=t.prompt.bind(t);g=!0,t.setPrompt(chalk.bold.cyan("icoa ioai2026> ")),await new Promise(n=>{t.on("line",async r=>{const l=r.trim(),[c,i]=[l.split(/\s+/)[0]?.toLowerCase()||"",l.split(/\s+/)[1]||""];if(["back","quit","exit","menu"].includes(c))return f(e),console.log(chalk.gray(" 进度已保存。")),(()=>{g=!1,t.removeAllListeners("line");for(const o of s)t.on("line",o);t.setPrompt(chalk.green("icoa> ")),t.prompt()})(),void n();if(""===c||["challenges","list","ls"].includes(c))$(o,e);else if(["open","o"].includes(c)||/^\d+$/.test(c)){const n=Number.parseInt(/^\d+$/.test(c)?c:i,10),t=o.find(o=>o.seq===n);t?(e.opened.includes(n)||e.opened.push(n),f(e),function(o){console.log(),console.log(chalk.cyan(" ╭─ ")+chalk.bold.white(`${o.seq} · ${o.title}`)+chalk.gray(` · ${o.bullseye}`)+chalk.cyan(" ─────")),console.log(chalk.cyan(" │"));const e=[o.star,o.trap,o.action,o.hint?` ${o.hint}`:""].filter(Boolean);0===e.length&&o.topic_cn&&e.push(`▸ ${o.topic_cn}`);for(const o of e){for(const e of k(o,58))console.log(chalk.cyan(" │ ")+chalk.white(e));console.log(chalk.cyan(" │"))}console.log(chalk.cyan(" │ ")+chalk.gray(o.meta||`⏱ 难度 ${b(o.difficulty)}`)+chalk.gray(o.needs_gpu?" ⚡ 需要 GPU":"")),console.log(chalk.cyan(" ╰──────────────────────────────────────────────────────")),console.log(chalk.gray(" ")+chalk.cyan("ai")+chalk.gray(w(" 问 Gemma · "," ask Gemma · "))+chalk.cyan(`done ${o.seq}`)+chalk.gray(w(" 标记攻克 · "," mark cleared · "))+chalk.cyan("back")+chalk.gray(w(" 回列表"," back to list"))),console.log()}(t)):console.log(chalk.yellow(` 没有第 ${i||c} 题。`)+chalk.gray(` 题号 1-${o.length}。`))}else if("done"===c){const n=Number.parseInt(i,10);o.some(o=>o.seq===n)?(e.done.includes(n)||e.done.push(n),f(e),console.log(chalk.green(` ✓ 第 ${n} 题标记为攻克`)+chalk.gray(` (${e.done.length}/${o.length})`))):console.log(chalk.yellow(` 题号 1-${o.length}。`))}else"ai"===c?(console.log(),console.log(chalk.gray(" 开另一个窗口问 Gemma:")+chalk.cyan(" Ctrl-b %")+chalk.gray(" 分屏,右边输 ")+chalk.cyan("icoa")+chalk.gray(" 再输 ")+chalk.cyan("ai4ioai")),console.log(chalk.gray(" 它是弱模型,单轮、2000 字符以内 —— 把问题问准是这次要练的本事。")),console.log()):["help","?","guide"].includes(c)?$(o,e):console.log(chalk.gray(" ")+chalk.cyan("challenges")+chalk.gray(" 列表 · ")+chalk.cyan("open <n>")+chalk.gray(" 看题 · ")+chalk.cyan("done <n>")+chalk.gray(" 标记 · ")+chalk.cyan("back")+chalk.gray(w(" 退出"," leave")));t.prompt=a,t.prompt()}),t.prompt=a,t.prompt()})}export function registerSprintCommand(o){o.command("pandahelpme31",{hidden:!0}).action(async()=>{await runSprint()})}
|
|
@@ -5,217 +5,244 @@
|
|
|
5
5
|
"seq": 1,
|
|
6
6
|
"star": "★ 音频分类=mel 谱当单通道图像,自己写 Dataset 和 torch 训练循环",
|
|
7
7
|
"trap": "!! resnet18 的 conv1 只收 3 通道,换成 1 通道就丢了该层预训练权重",
|
|
8
|
-
"action": "▸
|
|
8
|
+
"action": "▸ 领数据:kaggle s01-sound-of-nature",
|
|
9
9
|
"meta": "⏱ 参考 25 分钟 · 难度 ★★☆☆☆",
|
|
10
|
-
"note": "288 条训练 9 类,wav 全是 5 秒 44.1kHz,先重采到 16k"
|
|
10
|
+
"note": "288 条训练 9 类,wav 全是 5 秒 44.1kHz,先重采到 16k",
|
|
11
|
+
"hint": "先用 torchaudio 读一条 wav 走 MelSpectrogram→log 打出 shape,再照着写 Dataset。"
|
|
11
12
|
},
|
|
12
13
|
{
|
|
13
14
|
"seq": 2,
|
|
14
15
|
"star": "★ 8 个周期特征先 sin/cos 还原环状结构;t-SNE 只能看,降维不产出答案",
|
|
15
16
|
"trap": "!! cand_0..4 是候选标签不是真标签;簇号要靠簇内候选列求和 argmax 映射",
|
|
16
|
-
"action": "▸
|
|
17
|
+
"action": "▸ 领数据:kaggle s02-mortys-time-paradox",
|
|
17
18
|
"meta": "⏱ 参考 25 分钟 · 难度 ★★☆☆☆",
|
|
18
|
-
"note": "t-SNE 没有 transform;要把 test 映射进来只能用 UMAP"
|
|
19
|
+
"note": "t-SNE 没有 transform;要把 test 映射进来只能用 UMAP",
|
|
20
|
+
"hint": "先看 8 列的 max 定出周期(≈11/13/17/19),sin/cos 编码成 16 维再聚类。"
|
|
19
21
|
},
|
|
20
22
|
{
|
|
21
23
|
"seq": 3,
|
|
22
24
|
"star": "★ 四标签各训一个二分类器;LoRA 微调对照 TF-IDF+CatBoost 基线",
|
|
23
25
|
"trap": "!! 四个标签各自调阈值;全用默认 0.5,稀有的 severe_toxic 直接塌",
|
|
24
|
-
"action": "▸
|
|
26
|
+
"action": "▸ 领数据:kaggle s03-how-toxic-are-you-online",
|
|
25
27
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
26
|
-
"note": "满分线各不同:severe_toxic 只需 F1 0.35,toxic 要 0.905"
|
|
28
|
+
"note": "满分线各不同:severe_toxic 只需 F1 0.35,toxic 要 0.905",
|
|
29
|
+
"hint": "先 TF-IDF+线性分类器打底,再对每个标签用 precision_recall_curve 找最优阈值。"
|
|
27
30
|
},
|
|
28
31
|
{
|
|
29
32
|
"seq": 4,
|
|
30
33
|
"star": "★ wav→mel→补裁成定长矩阵→当图像分类:librosa 只负责前两步",
|
|
31
34
|
"trap": "!! 182 条样本摊到 41 个类,split 不 stratify 就有类在验证集挂零",
|
|
32
|
-
"action": "▸
|
|
35
|
+
"action": "▸ 领数据:kaggle s04-is-that-audio",
|
|
33
36
|
"meta": "⏱ 参考 25 分钟 · 难度 ★★☆☆☆",
|
|
34
|
-
"note": "官方承认本轮有泄漏:样本 id 的 A_/B_ 前缀本身就带类组信息"
|
|
37
|
+
"note": "官方承认本轮有泄漏:样本 id 的 A_/B_ 前缀本身就带类组信息",
|
|
38
|
+
"hint": "先统计 train.csv 每类样本数,再定分层切分和 mel 的固定帧数。"
|
|
35
39
|
},
|
|
36
40
|
{
|
|
37
41
|
"seq": 5,
|
|
38
42
|
"star": "★ 四选一要手搓 MC 头:4 个选项各前向一次取 logit,再对 4 个分数算 CE",
|
|
39
43
|
"trap": "!! reshape 成 B*4 条各自打分,还原时维度弄反,选项就和 batch 串位",
|
|
40
|
-
"action": "▸
|
|
44
|
+
"action": "▸ 领数据:kaggle s05-essay-gap",
|
|
41
45
|
"meta": "⏱ 参考 25 分钟 · 难度 ★★☆☆☆",
|
|
42
|
-
"note": "4 选项 × 512 长度 × batch 一起前向,显存是主要瓶颈"
|
|
46
|
+
"note": "4 选项 × 512 长度 × batch 一起前向,显存是主要瓶颈",
|
|
47
|
+
"hint": "把 before[SEP]选项[SEP]after 拼成 4 条,先跑一个 batch 打印 logits 形状。"
|
|
43
48
|
},
|
|
44
49
|
{
|
|
45
50
|
"seq": 6,
|
|
46
51
|
"star": "★ CLIP 当特征提取器,检索=余弦相似;降维只是把 768 维压干净的可选一步",
|
|
47
52
|
"trap": "!! 参考图自己也在图库里,余弦相似度 1.0 必居首;不剔除,top-5 白丢一格",
|
|
48
|
-
"action": "▸
|
|
53
|
+
"action": "▸ 这题的数据是图片/模型权重或平台未公开 test,冲刺期先读思路",
|
|
49
54
|
"meta": "⏱ 参考 25 分钟 · 难度 ★★☆☆☆",
|
|
50
|
-
"note": "官方解答对 PIL 已是 RGB 的数组又做了一次 BGR2RGB,通道被换错"
|
|
55
|
+
"note": "官方解答对 PIL 已是 RGB 的数组又做了一次 BGR2RGB,通道被换错",
|
|
56
|
+
"hint": "先算 109×109 相似度矩阵,确认对角线是 1.0,再排除自身取 top-5。"
|
|
51
57
|
},
|
|
52
58
|
{
|
|
53
59
|
"seq": 7,
|
|
54
60
|
"star": "★ 887 条训练数据:LoRA 只训千分之几参数,正好压住过拟合",
|
|
55
61
|
"trap": "!! CONTRADICT 只有 189 条;直接上 CE,macro F1 被这一类拖死",
|
|
56
|
-
"action": "▸
|
|
62
|
+
"action": "▸ 领数据:kaggle s07-scientific-facts",
|
|
57
63
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
58
|
-
"note": "用 peft 时别忘 modules_to_save,新分类头否则不会被保存"
|
|
64
|
+
"note": "用 peft 时别忘 modules_to_save,新分类头否则不会被保存",
|
|
65
|
+
"hint": "claim 与 evidence 作两句传给 tokenizer,再用 StratifiedKFold 分折并给类加权。"
|
|
59
66
|
},
|
|
60
67
|
{
|
|
61
68
|
"seq": 8,
|
|
62
69
|
"star": "★ 200Hz 采的 20 秒信号,补洞在波形域做;要听就重采到 44.1kHz",
|
|
63
70
|
"trap": "!! 非零位置 Data_X 就等于 Data_y;抄回来,只预测那 20% 的空洞",
|
|
64
|
-
"action": "▸
|
|
71
|
+
"action": "▸ 领数据:kaggle s08-spooky-disaster-or-creepy-pizza",
|
|
65
72
|
"meta": "⏱ 参考 50 分钟 · 难度 ★★★★☆",
|
|
66
|
-
"note": "缺失是连续段(单曲约 13 段),datapointID 要写成带引号的 (id, i)"
|
|
73
|
+
"note": "缺失是连续段(单曲约 13 段),datapointID 要写成带引号的 (id, i)",
|
|
74
|
+
"hint": "先验证 Data_X!=0 的行两列完全相等,再只对 0 位置建模。"
|
|
67
75
|
},
|
|
68
76
|
{
|
|
69
77
|
"seq": 9,
|
|
70
78
|
"star": "★ 70 测试对 70 候选是双射;按行取 logit 最大值必撞车,需全局指派",
|
|
71
79
|
"trap": "!! linear_sum_assignment 求最小代价;分数忘了取负就挑出最差组合",
|
|
72
|
-
"action": "▸
|
|
80
|
+
"action": "▸ 领数据:kaggle s09-alchemy",
|
|
73
81
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
74
|
-
"note": "训练只有 150 对;item1/item2 互换是免费的对称增强"
|
|
82
|
+
"note": "训练只有 150 对;item1/item2 互换是免费的对称增强",
|
|
83
|
+
"hint": "先打出 70×70 的候选打分矩阵,再交给 scipy 的匈牙利算法解指派。"
|
|
75
84
|
},
|
|
76
85
|
{
|
|
77
86
|
"seq": 10,
|
|
78
87
|
"star": "★ 有效信号住在低维流形:PCA 降维再重构,重构误差大的就是噪声",
|
|
79
88
|
"trap": "!! 信号回归要先剔掉噪声行再训;预测还得乘掩码并 clip 到 0~100",
|
|
80
|
-
"action": "▸
|
|
89
|
+
"action": "▸ 领数据:kaggle s10-hello-aliens",
|
|
81
90
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
82
|
-
"note": "三个子任务写进同一个 csv,靠 subtaskID 列区分,缺一问丢一档分"
|
|
91
|
+
"note": "三个子任务写进同一个 csv,靠 subtaskID 列区分,缺一问丢一档分",
|
|
92
|
+
"hint": "先跑 PCA(15) 画重构误差直方图,找出分开信号与噪声的那道沟。"
|
|
83
93
|
},
|
|
84
94
|
{
|
|
85
95
|
"seq": 11,
|
|
86
96
|
"star": "★ 检测只换 box_predictor 头微调——和 LoRA 冻主干训小增量同源",
|
|
87
97
|
"trap": "!! 图缩到 224,标注框在 512 画布;提交不乘回 512/224,IoU 直接归零",
|
|
88
|
-
"action": "▸
|
|
98
|
+
"action": "▸ 这题的数据是图片/模型权重或平台未公开 test,冲刺期先读思路",
|
|
89
99
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
90
|
-
"note": "无鬼图的 target 要给空框张量 zeros((0,4)),不是四个 0"
|
|
100
|
+
"note": "无鬼图的 target 要给空框张量 zeros((0,4)),不是四个 0",
|
|
101
|
+
"hint": "先把一张训练图连同它的框画出来,确认坐标系是 512 而不是 224。"
|
|
91
102
|
},
|
|
92
103
|
{
|
|
93
104
|
"seq": 12,
|
|
94
105
|
"star": "★ 要还原可听波形就别过 mel——谱图丢相位;直接在波形域上 1D U-Net",
|
|
95
106
|
"trap": "!! 两路输出没有固定归属;普通 MSE 会互相打架,必须 PIT 取两种配对最小",
|
|
96
|
-
"action": "▸
|
|
107
|
+
"action": "▸ 领数据:kaggle s12-audio-demixing",
|
|
97
108
|
"meta": "⏱ 参考 50 分钟 · 难度 ★★★★☆",
|
|
98
|
-
"note": "提交是 base85 编码的 float32 数组;dtype 写成 float64 长度就翻倍"
|
|
109
|
+
"note": "提交是 base85 编码的 float32 数组;dtype 写成 float64 长度就翻倍",
|
|
110
|
+
"hint": "先写 PIT 损失,把 s1/s2 互换再喂一遍,确认 loss 数值不变。"
|
|
99
111
|
},
|
|
100
112
|
{
|
|
101
113
|
"seq": 13,
|
|
102
114
|
"star": "★ 训练集只有 50 行:别训模型,拿冻结 MLM 的 [MASK] logit 当特征",
|
|
103
115
|
"trap": "!! 目标词不在词表就静默变 [UNK],那一列特征全废却不报错",
|
|
104
|
-
"action": "▸
|
|
116
|
+
"action": "▸ 领数据:kaggle s13-polarity",
|
|
105
117
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
106
|
-
"note": "反义前后缀规则(un-/in-/dis-/il-)可直接覆盖一批预测"
|
|
118
|
+
"note": "反义前后缀规则(un-/in-/dis-/il-)可直接覆盖一批预测",
|
|
119
|
+
"hint": "先查 686 对词里有多少是单个 wordpiece,OOV 的另想打分办法。"
|
|
107
120
|
},
|
|
108
121
|
{
|
|
109
122
|
"seq": 14,
|
|
110
123
|
"star": "★ 两问两路:旋转分类走 CNN,跨域检索靠描述子降维成嵌入再最近邻",
|
|
111
124
|
"trap": "!! 旋转标签就是数据本身;任何随机翻转/旋转增强都会直接把标签洗掉",
|
|
112
|
-
"action": "▸
|
|
125
|
+
"action": "▸ 领数据:kaggle s14-sami-ofierul-de-conformitate",
|
|
113
126
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
114
|
-
"note": "计分是阶梯不是线性:旋转掉到 0.60 以下,30 分直接变 10 分"
|
|
127
|
+
"note": "计分是阶梯不是线性:旋转掉到 0.60 以下,30 分直接变 10 分",
|
|
128
|
+
"hint": "先把旋转四分类推过 macro F1 0.60 这条满分线,再攻检索那 70 分。"
|
|
115
129
|
},
|
|
116
130
|
{
|
|
117
131
|
"seq": 15,
|
|
118
132
|
"star": "★ 三问串成一条链:框错了像素数必错;主干冻住配轻量头即 LoRA 思路",
|
|
119
133
|
"trap": "!! 同一批特征 SVR 的 RMSE 1217、GBDT 只有 62——SVR 没缩放",
|
|
120
|
-
"action": "▸
|
|
134
|
+
"action": "▸ 这题的数据是图片/模型权重或平台未公开 test,冲刺期先读思路",
|
|
121
135
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
122
|
-
"note": "翻转增强时 bbox 要同步翻(x→W-x2, W-x1),提交是空格分隔的四个数"
|
|
136
|
+
"note": "翻转增强时 bbox 要同步翻(x→W-x2, W-x1),提交是空格分隔的四个数",
|
|
137
|
+
"hint": "先跑通「有鸭→出框→按框裁剪回归像素数」三步,任一步断链后面全废。"
|
|
123
138
|
},
|
|
124
139
|
{
|
|
125
140
|
"seq": 16,
|
|
126
141
|
"star": "★ 字节码当 token 序列喂 RNN 回归;pad 位必须 mask 掉再池化",
|
|
127
142
|
"trap": "!! pack 序列的 lengths 必须留在 CPU;放到 GPU 上直接报错",
|
|
128
|
-
"action": "▸
|
|
143
|
+
"action": "▸ 领数据:kaggle s16-lost-interpreter",
|
|
129
144
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
130
|
-
"note": "目标先标准化再训,算 MAE 前反标准化并 rint 取整"
|
|
145
|
+
"note": "目标先标准化再训,算 MAE 前反标准化并 rint 取整",
|
|
146
|
+
"hint": "先按 ';' 切 token 建词表,用 pack_padded_sequence 走通一个 batch。"
|
|
131
147
|
},
|
|
132
148
|
{
|
|
133
149
|
"seq": 17,
|
|
134
150
|
"star": "★ 字符级 TF-IDF 走 SVD 降到 300 维,再用 Ridge 学西→英映射",
|
|
135
151
|
"trap": "!! 两个 SVD 各自 fit,坐标系不通;不学映射直接算 cosine 等于瞎比",
|
|
136
|
-
"action": "▸
|
|
152
|
+
"action": "▸ 领数据:kaggle s17-bazarul-lui-riki",
|
|
137
153
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
138
|
-
"note": "word 级 TF-IDF 跨语种失效;要 analyzer='char' 才有共享 n-gram"
|
|
154
|
+
"note": "word 级 TF-IDF 跨语种失效;要 analyzer='char' 才有共享 n-gram",
|
|
155
|
+
"hint": "先把 is_food=-1 的平行行挑出来当对齐语料,它们不参与分类训练。"
|
|
139
156
|
},
|
|
140
157
|
{
|
|
141
158
|
"seq": 18,
|
|
142
159
|
"star": "★ 先把 pooling 和 instruct 前缀调对再上 LoRA;顺序反了白练",
|
|
143
160
|
"trap": "!! pooling 从 last-token 换成 mean,分数 100 掉到 45",
|
|
144
|
-
"action": "▸
|
|
161
|
+
"action": "▸ 领数据:kaggle s18-the-hieroglyph-hunter",
|
|
145
162
|
"meta": "⏱ 参考 50 分钟 · 难度 ★★★★☆",
|
|
146
|
-
"note": "查询侧加 Instruct 前缀、语料侧不加;emoji 先 demojize 成英文名更稳"
|
|
163
|
+
"note": "查询侧加 Instruct 前缀、语料侧不加;emoji 先 demojize 成英文名更稳",
|
|
164
|
+
"hint": "先用 support_examples 验证 pooling 与前缀选对了,再决定要不要微调。"
|
|
147
165
|
},
|
|
148
166
|
{
|
|
149
167
|
"seq": 19,
|
|
150
168
|
"star": "★ 别急着写 torch 训练循环:8 个梯度/拉普拉斯统计量喂 RF 就过满分线",
|
|
151
169
|
"trap": "!! 坑数 clip 到 3~8、年龄 clip 到 1~5;不夹住 MAE 直接被拉爆",
|
|
152
|
-
"action": "▸
|
|
170
|
+
"action": "▸ 领数据:kaggle s19-lunar-craters",
|
|
153
171
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
154
|
-
"note": "年龄那问占 80 分,满分线 MAE≤0.3,手工特征就够到"
|
|
172
|
+
"note": "年龄那问占 80 分,满分线 MAE≤0.3,手工特征就够到",
|
|
173
|
+
"hint": "先用 cv2 抽出 8 个梯度/拉普拉斯统计量,喂 RandomForest 看 MAE。"
|
|
155
174
|
},
|
|
156
175
|
{
|
|
157
176
|
"seq": 20,
|
|
158
177
|
"star": "★ 两个倒数第二层就是两个特征提取器:谁的低维嵌入能线性还原 y,就归谁",
|
|
159
178
|
"trap": "!! 标签是没有的;只比一次全量 ridge 的残差分不开,要 EM 反复加权重拟合",
|
|
160
|
-
"action": "▸
|
|
179
|
+
"action": "▸ 这题的数据是图片/模型权重或平台未公开 test,冲刺期先读思路",
|
|
161
180
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
162
|
-
"note": "E 步算软责任时 softmax 记得减 max,否则数值溢出"
|
|
181
|
+
"note": "E 步算软责任时 softmax 记得减 max,否则数值溢出",
|
|
182
|
+
"hint": "先用两组权重把 x 前向成 ZA/ZB,各拟合一个 ridge 头看残差分布。"
|
|
163
183
|
},
|
|
164
184
|
{
|
|
165
185
|
"seq": 21,
|
|
166
186
|
"star": "★ 错字与正文等长 ⇒ encoder-only 逐字符分类;LoRA 合回主干零时延",
|
|
167
187
|
"trap": "!! 输入与标签要用同一套 stride 分块;参数差一点两边 chunk 数就错位",
|
|
168
|
-
"action": "▸
|
|
188
|
+
"action": "▸ 领数据:kaggle s21-autocorrect",
|
|
169
189
|
"meta": "⏱ 参考 50 分钟 · 难度 ★★★★☆",
|
|
170
|
-
"note": "官方三坑:局部任务、等长、超默认截断长度的样本超过四分之一"
|
|
190
|
+
"note": "官方三坑:局部任务、等长、超默认截断长度的样本超过四分之一",
|
|
191
|
+
"hint": "先确认两列字符数完全相等,再定 chunk 长度和 250 秒推理预算。"
|
|
171
192
|
},
|
|
172
193
|
{
|
|
173
194
|
"seq": 22,
|
|
174
195
|
"star": "★ 翻转让贴纸文字失效:在 torch 里逐维比符号,就能拆开文字维和视觉维",
|
|
175
196
|
"trap": "!! 文件名字典序会排成 1,10,100…;要 key=int(stem),不然整份错位",
|
|
176
|
-
"action": "▸
|
|
197
|
+
"action": "▸ 这题的数据是图片/模型权重或平台未公开 test,冲刺期先读思路",
|
|
177
198
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
178
|
-
"note": "官方实测约五分之一的维度被贴纸文字劫持;类嵌入也要先归一化"
|
|
199
|
+
"note": "官方实测约五分之一的维度被贴纸文字劫持;类嵌入也要先归一化",
|
|
200
|
+
"hint": "先编码原图与水平翻转图,打印逐维乘积里负数占了多少维。"
|
|
179
201
|
},
|
|
180
202
|
{
|
|
181
203
|
"seq": 23,
|
|
182
204
|
"star": "★ 第二问训练集根本没有主题标签:只能在 test 上直接聚类,降维图只是给你看",
|
|
183
205
|
"trap": "!! 答案是 SCIENCE/CRIME 这类字符串;簇号随机,要看簇心 top 词映射",
|
|
184
|
-
"action": "▸
|
|
206
|
+
"action": "▸ 领数据:kaggle s23-om-vs-ai",
|
|
185
207
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
186
|
-
"note": "第一问 char_wb 的 2-8 gram 比 word 级强很多,满分线 macro F1 0.95"
|
|
208
|
+
"note": "第一问 char_wb 的 2-8 gram 比 word 级强很多,满分线 macro F1 0.95",
|
|
209
|
+
"hint": "先把 test 里 subtaskID=2 的行单独取出,只在它们上面做聚类。"
|
|
187
210
|
},
|
|
188
211
|
{
|
|
189
212
|
"seq": 24,
|
|
190
213
|
"star": "★ 冻住 ResNet50 只训一个小头(和 LoRA 同构),力气全花在掐掉捷径上",
|
|
191
214
|
"trap": "!! 红方块只贴在训练集 Earth 图的边缘;不裁边,模型学的是方块不是鸟",
|
|
192
|
-
"action": "▸
|
|
215
|
+
"action": "▸ 领数据:kaggle s24-angry-birds",
|
|
193
216
|
"meta": "⏱ 参考 70 分钟 · 难度 ★★★★★",
|
|
194
|
-
"note": "只按四组里最差那组计分,整体 95% 也可能拿 0;禁止手工标注"
|
|
217
|
+
"note": "只按四组里最差那组计分,整体 95% 也可能拿 0;禁止手工标注",
|
|
218
|
+
"hint": "先按蓝通道均值自动标出背景,再把四组(鸟种×背景)的准确率分别打出来。"
|
|
195
219
|
},
|
|
196
220
|
{
|
|
197
221
|
"seq": 25,
|
|
198
222
|
"star": "★ 手写 4 层 CNN 训练循环的底线:15 轮 macro F1 约 0.75",
|
|
199
223
|
"trap": "!! 标签编码器要复用 train 的那个;test 上重新 fit,六类映射就错位",
|
|
200
|
-
"action": "▸
|
|
224
|
+
"action": "▸ 领数据:kaggle s25-smart-waste-classifier",
|
|
201
225
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
202
|
-
"note": "标签形状是 (B,1),喂 CrossEntropyLoss 前要 squeeze"
|
|
226
|
+
"note": "标签形状是 (B,1),喂 CrossEntropyLoss 前要 squeeze",
|
|
227
|
+
"hint": "先跑 15 轮从零 CNN 记下 macro F1,再换预训练 backbone 比涨幅。"
|
|
203
228
|
},
|
|
204
229
|
{
|
|
205
230
|
"seq": 26,
|
|
206
231
|
"star": "★ 把每个模型的预测回归到特征上,15 维系数就是它的低维指纹;干净的聚成一簇",
|
|
207
232
|
"trap": "!! kneighbors 第一个邻居就是它自己;设 5 拿到的是自己加 4 个邻居",
|
|
208
|
-
"action": "▸
|
|
233
|
+
"action": "▸ 这题的数据是图片/模型权重或平台未公开 test,冲刺期先读思路",
|
|
209
234
|
"meta": "⏱ 参考 35 分钟 · 难度 ★★★☆☆",
|
|
210
|
-
"note": "答案只有一行:5 个索引用逗号连成一个字符串写进 answer"
|
|
235
|
+
"note": "答案只有一行:5 个索引用逗号连成一个字符串写进 answer",
|
|
236
|
+
"hint": "用一次 LinearRegression 多输出拟合 1000 列,系数标准化后找最紧的近邻团。"
|
|
211
237
|
},
|
|
212
238
|
{
|
|
213
239
|
"seq": 27,
|
|
214
240
|
"star": "★ 冻住旧类的 head、只训新类,靠 gate 分流 —— 抗遗忘的标准解",
|
|
215
241
|
"trap": "!! val 从有偏 train 切出,系统性低估旧类;照 val 调参必翻车",
|
|
216
|
-
"action": "▸
|
|
242
|
+
"action": "▸ 领数据:kaggle audio-classifier",
|
|
217
243
|
"meta": "⏱ 参考 50 分钟 · 难度 ★★★★☆",
|
|
218
|
-
"note": "ICOA 自建题(IOAI 真 home task 1),参考解法 A11 实测 LB 0.889"
|
|
244
|
+
"note": "ICOA 自建题(IOAI 真 home task 1),参考解法 A11 实测 LB 0.889",
|
|
245
|
+
"hint": "kaggle audio-classifier | 先跑通冻结基线拿到分,再动新类那一侧"
|
|
219
246
|
}
|
|
220
247
|
]
|
|
221
248
|
}
|