{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9.html","relationshipResolution":"Resolve relative relationship URLs against relationshipURLBase; complete records and absolute URLs are in blocks.","title":"先拆开两个容易混淆的问题 · 实现代码","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9.md","pages":[{"id":"reading-opening","title":"先拆开两个容易混淆的问题 · 实现代码","unit":"先拆开两个容易混淆的问题 · 实现代码","unitId":"notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9","chapter":"course","number":1}],"aliases":[{"oldId":"b-b5922bbff9e6d4e59aa0cb25","targetId":"b-b5922bbff9e6d4e59aa0cb25","page":"reading-opening","operation":"move","beforeSHA256":"db08960319942d9119c9cad2cf7d0b78a68c914f8e19ab3bd375531d27c96204","afterSHA256":"db08960319942d9119c9cad2cf7d0b78a68c914f8e19ab3bd375531d27c96204","reason":"Same source body in authored semantic page"},{"oldId":"b-d8a26fd7520c48f1186f744f","targetId":"b-d8a26fd7520c48f1186f744f","page":"reading-opening","operation":"move","beforeSHA256":"4ffef91210d5188b0a73a94b5ada143a3f57055ff3aec4e9ed24a71a667abcd1","afterSHA256":"4ffef91210d5188b0a73a94b5ada143a3f57055ff3aec4e9ed24a71a667abcd1","reason":"Same source body in authored semantic page"},{"oldId":"b-5a11e69ba7bb0d3b67a7b89b","targetId":"b-5a11e69ba7bb0d3b67a7b89b","page":"reading-opening","operation":"move","beforeSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","afterSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","reason":"Same source body in authored semantic page"},{"oldId":"b-490b614857b3c7fe3f679709","targetId":"b-490b614857b3c7fe3f679709","page":"reading-opening","operation":"move","beforeSHA256":"6a611aef342a7535362f318ee0c33b63170ce4ab853fa44a05f76a04873fd320","afterSHA256":"6a611aef342a7535362f318ee0c33b63170ce4ab853fa44a05f76a04873fd320","reason":"Same source body in authored semantic page"},{"oldId":"b-7f8004e7d0169c2a3660f643","targetId":"b-7f8004e7d0169c2a3660f643","page":"reading-opening","operation":"move","beforeSHA256":"fe612210a04db2d66535a4d2e55646467ca69911a367f10f2740b915aff04424","afterSHA256":"fe612210a04db2d66535a4d2e55646467ca69911a367f10f2740b915aff04424","reason":"Same source body in authored semantic page"}],"blocks":[{"id":"b-b5922bbff9e6d4e59aa0cb25","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9.html#b-b5922bbff9e6d4e59aa0cb25","content":"[LAB 13 · 看图生成一句话：训练、解码与消融](/course/notebooks/3da47f3ee3554ee0a36e0bb6a2fdc61f.html)","sha256":"db08960319942d9119c9cad2cf7d0b78a68c914f8e19ab3bd375531d27c96204","chapter":{"id":"course","title":"先拆开两个容易混淆的问题 · 实现代码"},"unit":{"id":"notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9","title":"先拆开两个容易混淆的问题 · 实现代码"},"page":{"id":"reading-opening","title":"先拆开两个容易混淆的问题 · 实现代码","number":1},"sectionTitle":"先拆开两个容易混淆的问题 · 实现代码","currentQuestion":"先拆开两个容易混淆的问题 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-d8a26fd7520c48f1186f744f","prerequisites":[],"relatedBlocks":[]},{"id":"b-d8a26fd7520c48f1186f744f","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9.html#b-d8a26fd7520c48f1186f744f","content":"# 先拆开两个容易混淆的问题 · 实现代码","sha256":"4ffef91210d5188b0a73a94b5ada143a3f57055ff3aec4e9ed24a71a667abcd1","chapter":{"id":"course","title":"先拆开两个容易混淆的问题 · 实现代码"},"unit":{"id":"notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9","title":"先拆开两个容易混淆的问题 · 实现代码"},"page":{"id":"reading-opening","title":"先拆开两个容易混淆的问题 · 实现代码","number":1},"sectionTitle":"先拆开两个容易混淆的问题 · 实现代码","currentQuestion":"先拆开两个容易混淆的问题 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-b5922bbff9e6d4e59aa0cb25","nextBlock":"b-5a11e69ba7bb0d3b67a7b89b","prerequisites":[{"id":"b-b5922bbff9e6d4e59aa0cb25","url":"#b-b5922bbff9e6d4e59aa0cb25","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-5a11e69ba7bb0d3b67a7b89b","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9.html#b-5a11e69ba7bb0d3b67a7b89b","content":"按问题继续","sha256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","chapter":{"id":"course","title":"先拆开两个容易混淆的问题 · 实现代码"},"unit":{"id":"notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9","title":"先拆开两个容易混淆的问题 · 实现代码"},"page":{"id":"reading-opening","title":"先拆开两个容易混淆的问题 · 实现代码","number":1},"sectionTitle":"先拆开两个容易混淆的问题 · 实现代码","currentQuestion":"先拆开两个容易混淆的问题 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-d8a26fd7520c48f1186f744f","nextBlock":"b-490b614857b3c7fe3f679709","prerequisites":[{"id":"b-d8a26fd7520c48f1186f744f","url":"#b-d8a26fd7520c48f1186f744f","role":"section-title"},{"id":"b-b5922bbff9e6d4e59aa0cb25","url":"#b-b5922bbff9e6d4e59aa0cb25","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-490b614857b3c7fe3f679709","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9.html#b-490b614857b3c7fe3f679709","content":"真实CNN–GRU条件训练与greedy/beam生成、遮图/错图消融","sha256":"6a611aef342a7535362f318ee0c33b63170ce4ab853fa44a05f76a04873fd320","chapter":{"id":"course","title":"先拆开两个容易混淆的问题 · 实现代码"},"unit":{"id":"notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9","title":"先拆开两个容易混淆的问题 · 实现代码"},"page":{"id":"reading-opening","title":"先拆开两个容易混淆的问题 · 实现代码","number":1},"sectionTitle":"先拆开两个容易混淆的问题 · 实现代码","currentQuestion":"先拆开两个容易混淆的问题 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-5a11e69ba7bb0d3b67a7b89b","nextBlock":"b-7f8004e7d0169c2a3660f643","prerequisites":[{"id":"b-d8a26fd7520c48f1186f744f","url":"#b-d8a26fd7520c48f1186f744f","role":"section-title"},{"id":"b-b5922bbff9e6d4e59aa0cb25","url":"#b-b5922bbff9e6d4e59aa0cb25","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-7f8004e7d0169c2a3660f643","type":"pre","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9.html#b-7f8004e7d0169c2a3660f643","content":"```\n# Detached readonly runs write only to an isolated ephemeral directory.\nimport os, tempfile\n_LAB_WORKDIR = tempfile.mkdtemp(prefix=\"lecture03-lab13-\")\nos.chdir(_LAB_WORKDIR)\nprint(\"ephemeral workdir:\", _LAB_WORKDIR)\n\nseqs=[[1,4,5,2],[1,6,2,0]]\nprint('warm-up input',[s[:-1] for s in seqs])\nprint('warm-up target',[s[1:] for s in seqs])\nprint('warm-up loss mask',[[int(t!=0) for t in s[1:]] for s in seqs])\n# Every outgoing distribution sums to one. Both paths terminate after two tokens.\ntree={():{'A':.55,'B':.45},('A',):{'X':.45,'Z':.55},('B',):{'Y':.80,'Z':.20}}\nassert all(abs(sum(p.values())-1)<1e-9 for p in tree.values())\ngreedy_path=();greedy_probability=1.\nfor _ in range(2):\n    token=max(tree[greedy_path],key=tree[greedy_path].get)\n    greedy_probability*=tree[greedy_path][token];greedy_path+= (token,)\nbeams=[((),1.)]\nfor _ in range(2):\n    beams=sorted([(seq+(word,),p*conditional) for seq,p in beams for word,conditional in tree[seq].items()],key=lambda b:b[1],reverse=True)[:2]\nprint('actual tree greedy:',greedy_path,greedy_probability,'beam2:',beams[0])\n```","sha256":"fe612210a04db2d66535a4d2e55646467ca69911a367f10f2740b915aff04424","chapter":{"id":"course","title":"先拆开两个容易混淆的问题 · 实现代码"},"unit":{"id":"notebook-blocks/3e80e4f0e33b470ba563baeb509e47c9","title":"先拆开两个容易混淆的问题 · 实现代码"},"page":{"id":"reading-opening","title":"先拆开两个容易混淆的问题 · 实现代码","number":1},"sectionTitle":"先拆开两个容易混淆的问题 · 实现代码","currentQuestion":"先拆开两个容易混淆的问题 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-490b614857b3c7fe3f679709","nextBlock":null,"prerequisites":[{"id":"b-d8a26fd7520c48f1186f744f","url":"#b-d8a26fd7520c48f1186f744f","role":"section-title"},{"id":"b-b5922bbff9e6d4e59aa0cb25","url":"#b-b5922bbff9e6d4e59aa0cb25","role":"problem-context"}],"relatedBlocks":[]}]}
