{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/040689f0e3594ff988d47a70c68dbab6.html","relationshipResolution":"Resolve relative relationship URLs against relationshipURLBase; complete records and absolute URLs are in blocks.","title":"5. 学习曲线与可以被推翻的结论 · 实现代码","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/040689f0e3594ff988d47a70c68dbab6.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/040689f0e3594ff988d47a70c68dbab6.md","pages":[{"id":"reading-opening","title":"5. 学习曲线与可以被推翻的结论 · 实现代码","unit":"5. 学习曲线与可以被推翻的结论 · 实现代码","unitId":"notebook-blocks/040689f0e3594ff988d47a70c68dbab6","chapter":"course","number":1}],"aliases":[{"oldId":"b-c2aaaf8acc98ba5df6cecf6f","targetId":"b-c2aaaf8acc98ba5df6cecf6f","page":"reading-opening","operation":"move","beforeSHA256":"926fc2429c1a5c837765e5152b3b61fda31c10537785a439d49dec46e82a8536","afterSHA256":"926fc2429c1a5c837765e5152b3b61fda31c10537785a439d49dec46e82a8536","reason":"Same source body in authored semantic page"},{"oldId":"b-17d998649284f1795a3843ff","targetId":"b-17d998649284f1795a3843ff","page":"reading-opening","operation":"move","beforeSHA256":"4a1be71a043f25cde805beed12e5a5092c732682fa944e4c2849421944c0c676","afterSHA256":"4a1be71a043f25cde805beed12e5a5092c732682fa944e4c2849421944c0c676","reason":"Same source body in authored semantic page"},{"oldId":"b-4f98c7022bc12d7ed00baddd","targetId":"b-4f98c7022bc12d7ed00baddd","page":"reading-opening","operation":"move","beforeSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","afterSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","reason":"Same source body in authored semantic page"},{"oldId":"b-9d8c755ef7d2d10b72602133","targetId":"b-9d8c755ef7d2d10b72602133","page":"reading-opening","operation":"move","beforeSHA256":"5790b0afb52508f0174b1bc581f7847035a51c5c2a46e5c821bcd9d5d61bcbb0","afterSHA256":"5790b0afb52508f0174b1bc581f7847035a51c5c2a46e5c821bcd9d5d61bcbb0","reason":"Same source body in authored semantic page"},{"oldId":"b-0e69c09c241bd57699177498","targetId":"b-0e69c09c241bd57699177498","page":"reading-opening","operation":"move","beforeSHA256":"2e78f928663ed19a4abe9bb865f2ec5b12eca912e29834ec3865f05c50ab3b0b","afterSHA256":"2e78f928663ed19a4abe9bb865f2ec5b12eca912e29834ec3865f05c50ab3b0b","reason":"Same source body in authored semantic page"}],"blocks":[{"id":"b-c2aaaf8acc98ba5df6cecf6f","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/040689f0e3594ff988d47a70c68dbab6.html#b-c2aaaf8acc98ba5df6cecf6f","content":"[LAB 14 · 图像问答：视觉条件与问题先验](/course/notebooks/11d9f74871544a77b42024a9fe06b81a.html)","sha256":"926fc2429c1a5c837765e5152b3b61fda31c10537785a439d49dec46e82a8536","chapter":{"id":"course","title":"5. 学习曲线与可以被推翻的结论 · 实现代码"},"unit":{"id":"notebook-blocks/040689f0e3594ff988d47a70c68dbab6","title":"5. 学习曲线与可以被推翻的结论 · 实现代码"},"page":{"id":"reading-opening","title":"5. 学习曲线与可以被推翻的结论 · 实现代码","number":1},"sectionTitle":"5. 学习曲线与可以被推翻的结论 · 实现代码","currentQuestion":"5. 学习曲线与可以被推翻的结论 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-17d998649284f1795a3843ff","prerequisites":[],"relatedBlocks":[]},{"id":"b-17d998649284f1795a3843ff","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/040689f0e3594ff988d47a70c68dbab6.html#b-17d998649284f1795a3843ff","content":"# 5. 学习曲线与可以被推翻的结论 · 实现代码","sha256":"4a1be71a043f25cde805beed12e5a5092c732682fa944e4c2849421944c0c676","chapter":{"id":"course","title":"5. 学习曲线与可以被推翻的结论 · 实现代码"},"unit":{"id":"notebook-blocks/040689f0e3594ff988d47a70c68dbab6","title":"5. 学习曲线与可以被推翻的结论 · 实现代码"},"page":{"id":"reading-opening","title":"5. 学习曲线与可以被推翻的结论 · 实现代码","number":1},"sectionTitle":"5. 学习曲线与可以被推翻的结论 · 实现代码","currentQuestion":"5. 学习曲线与可以被推翻的结论 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-c2aaaf8acc98ba5df6cecf6f","nextBlock":"b-4f98c7022bc12d7ed00baddd","prerequisites":[{"id":"b-c2aaaf8acc98ba5df6cecf6f","url":"#b-c2aaaf8acc98ba5df6cecf6f","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-4f98c7022bc12d7ed00baddd","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/040689f0e3594ff988d47a70c68dbab6.html#b-4f98c7022bc12d7ed00baddd","content":"按问题继续","sha256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","chapter":{"id":"course","title":"5. 学习曲线与可以被推翻的结论 · 实现代码"},"unit":{"id":"notebook-blocks/040689f0e3594ff988d47a70c68dbab6","title":"5. 学习曲线与可以被推翻的结论 · 实现代码"},"page":{"id":"reading-opening","title":"5. 学习曲线与可以被推翻的结论 · 实现代码","number":1},"sectionTitle":"5. 学习曲线与可以被推翻的结论 · 实现代码","currentQuestion":"5. 学习曲线与可以被推翻的结论 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-17d998649284f1795a3843ff","nextBlock":"b-9d8c755ef7d2d10b72602133","prerequisites":[{"id":"b-17d998649284f1795a3843ff","url":"#b-17d998649284f1795a3843ff","role":"section-title"},{"id":"b-c2aaaf8acc98ba5df6cecf6f","url":"#b-c2aaaf8acc98ba5df6cecf6f","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-9d8c755ef7d2d10b72602133","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/040689f0e3594ff988d47a70c68dbab6.html#b-9d8c755ef7d2d10b72602133","content":"RGB+问题输入、question-only对照、同图换问与同问换图","sha256":"5790b0afb52508f0174b1bc581f7847035a51c5c2a46e5c821bcd9d5d61bcbb0","chapter":{"id":"course","title":"5. 学习曲线与可以被推翻的结论 · 实现代码"},"unit":{"id":"notebook-blocks/040689f0e3594ff988d47a70c68dbab6","title":"5. 学习曲线与可以被推翻的结论 · 实现代码"},"page":{"id":"reading-opening","title":"5. 学习曲线与可以被推翻的结论 · 实现代码","number":1},"sectionTitle":"5. 学习曲线与可以被推翻的结论 · 实现代码","currentQuestion":"5. 学习曲线与可以被推翻的结论 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-4f98c7022bc12d7ed00baddd","nextBlock":"b-0e69c09c241bd57699177498","prerequisites":[{"id":"b-17d998649284f1795a3843ff","url":"#b-17d998649284f1795a3843ff","role":"section-title"},{"id":"b-c2aaaf8acc98ba5df6cecf6f","url":"#b-c2aaaf8acc98ba5df6cecf6f","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-0e69c09c241bd57699177498","type":"pre","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/040689f0e3594ff988d47a70c68dbab6.html#b-0e69c09c241bd57699177498","content":"```\nfig,axes=plt.subplots(1,3,figsize=(11,4))\nfor i,ax in enumerate(axes):\n    ax.imshow(controls_x[i].permute(1,2,0));ax.axis('off')\n    rows=['count: ','left color: ','right shape: ']\n    text='\\n'.join(rows[j]+ANSWERS[int(controls_pred[i,j])]+' [Q-only: '+ANSWERS[int(controls_qo[i,j])]+']' for j in range(3))\n    ax.set_title(text,fontsize=10)\nfig.suptitle('LAB14: same questions, changed image; three questions per image',fontsize=13)\nfig.tight_layout();fig.savefig(OUT/'lab14-vqa-controls.png',dpi=160);plt.show();plt.close(fig)\nfig,ax=plt.subplots(figsize=(10,3.6));labels=['image + Q','Q only','zero pixels','shuffled pixels'];keys=['test_image_question','test_question_only','test_zero_pixels','test_shuffled_pixels'];values=[metrics[k]['overall'] for k in keys]\nax.bar(labels,values,color=['#356b91','#ad8251','#9da6ad','#9da6ad']);ax.set(ylim=(0,1.1),ylabel='answer accuracy (540 held-out pairs)')\nfor i,v in enumerate(values):ax.text(i,v+.02,f'{v:.1%}',ha='center')\nfig.tight_layout();fig.savefig(OUT/'lab14-vqa-ablation.png',dpi=160);plt.show();plt.close(fig)\nfig,ax=plt.subplots(figsize=(8,3.2))\nfor label in ['image+question','question-only']:\n    r=[v for v in curve if v['model']==label];ax.plot([v['epoch'] for v in r],[v['train_ce'] for v in r],label=label)\nax.set(xlabel='epoch',ylabel='answer cross entropy');ax.legend();fig.tight_layout();fig.savefig(OUT/'lab14-vqa-learning.png',dpi=160);plt.show();plt.close(fig)\nresult={'notebook_id':'11d9f74871544a77b42024a9fe06b81a','execution':'local CPU, fresh process; not a Deepnote cloud run','created_utc':datetime.now(timezone.utc).isoformat(),'elapsed_seconds':time.perf_counter()-START,'environment':{'python':sys.version,'torch':torch.__version__,'numpy':np.__version__,'platform':platform.platform()},'split':{'train_seed':14031,'test_seed':14032,'train_images':720,'test_images':180,'questions_per_image':3,'split_before_question_expansion':True,'train_red_prior':.75,'test_color_prior':'uniform by construction'},'metrics':metrics,'curve':curve,'controls':controls,'predictions':[{'truth':[ANSWERS[int(v)] for v in Yte[i]],'image_question':[ANSWERS[int(v)] for v in normal[i]],'question_only':[ANSWERS[int(v)] for v in qo[i]]} for i in range(len(Xte))],'files_sha256':{p.name:hashlib.sha256(p.read_bytes()).hexdigest() for p in sorted(OUT.glob('*.pt'))},'data_sha256':hashlib.sha256((OUT/'lab14-data.npz').read_bytes()).hexdigest()}\n(OUT/'lab14-results.json').write_text(json.dumps(result,indent=2));print('saved',OUT,'seconds',round(result['elapsed_seconds'],2))\n```","sha256":"2e78f928663ed19a4abe9bb865f2ec5b12eca912e29834ec3865f05c50ab3b0b","chapter":{"id":"course","title":"5. 学习曲线与可以被推翻的结论 · 实现代码"},"unit":{"id":"notebook-blocks/040689f0e3594ff988d47a70c68dbab6","title":"5. 学习曲线与可以被推翻的结论 · 实现代码"},"page":{"id":"reading-opening","title":"5. 学习曲线与可以被推翻的结论 · 实现代码","number":1},"sectionTitle":"5. 学习曲线与可以被推翻的结论 · 实现代码","currentQuestion":"5. 学习曲线与可以被推翻的结论 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-9d8c755ef7d2d10b72602133","nextBlock":null,"prerequisites":[{"id":"b-17d998649284f1795a3843ff","url":"#b-17d998649284f1795a3843ff","role":"section-title"},{"id":"b-c2aaaf8acc98ba5df6cecf6f","url":"#b-c2aaaf8acc98ba5df6cecf6f","role":"problem-context"}],"relatedBlocks":[]}]}
