{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/1a6a0f13eab24338b41badd5b17c9678.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/1a6a0f13eab24338b41badd5b17c9678.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/1a6a0f13eab24338b41badd5b17c9678.md","pages":[{"id":"reading-opening","title":"5. 读真实图、真实曲线与失败边界 · 实现代码","unit":"5. 读真实图、真实曲线与失败边界 · 实现代码","unitId":"notebook-blocks/1a6a0f13eab24338b41badd5b17c9678","chapter":"course","number":1}],"aliases":[{"oldId":"b-7cbb12ec543a48564c5a95e3","targetId":"b-7cbb12ec543a48564c5a95e3","page":"reading-opening","operation":"move","beforeSHA256":"db08960319942d9119c9cad2cf7d0b78a68c914f8e19ab3bd375531d27c96204","afterSHA256":"db08960319942d9119c9cad2cf7d0b78a68c914f8e19ab3bd375531d27c96204","reason":"Same source body in authored semantic page"},{"oldId":"b-936a2100f5c47463495df8df","targetId":"b-936a2100f5c47463495df8df","page":"reading-opening","operation":"move","beforeSHA256":"36a8c231fe18626fe64990cd02ae630ea712070c9b815efcf950bb35751a5243","afterSHA256":"36a8c231fe18626fe64990cd02ae630ea712070c9b815efcf950bb35751a5243","reason":"Same source body in authored semantic page"},{"oldId":"b-72ba80532ffcfe35b9ec4b39","targetId":"b-72ba80532ffcfe35b9ec4b39","page":"reading-opening","operation":"move","beforeSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","afterSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","reason":"Same source body in authored semantic page"},{"oldId":"b-fa5a70231b008dc1cad07bab","targetId":"b-fa5a70231b008dc1cad07bab","page":"reading-opening","operation":"move","beforeSHA256":"6a611aef342a7535362f318ee0c33b63170ce4ab853fa44a05f76a04873fd320","afterSHA256":"6a611aef342a7535362f318ee0c33b63170ce4ab853fa44a05f76a04873fd320","reason":"Same source body in authored semantic page"},{"oldId":"b-ae6afae0eda242225ad9bc15","targetId":"b-ae6afae0eda242225ad9bc15","page":"reading-opening","operation":"move","beforeSHA256":"fe6b7b975ffb43f76795d7a6d1dd588c056cfb2c1266f38d7307a533a1177f11","afterSHA256":"fe6b7b975ffb43f76795d7a6d1dd588c056cfb2c1266f38d7307a533a1177f11","reason":"Same source body in authored semantic page"}],"blocks":[{"id":"b-7cbb12ec543a48564c5a95e3","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/1a6a0f13eab24338b41badd5b17c9678.html#b-7cbb12ec543a48564c5a95e3","content":"[LAB 13 · 看图生成一句话：训练、解码与消融](/course/notebooks/3da47f3ee3554ee0a36e0bb6a2fdc61f.html)","sha256":"db08960319942d9119c9cad2cf7d0b78a68c914f8e19ab3bd375531d27c96204","chapter":{"id":"course","title":"5. 读真实图、真实曲线与失败边界 · 实现代码"},"unit":{"id":"notebook-blocks/1a6a0f13eab24338b41badd5b17c9678","title":"5. 读真实图、真实曲线与失败边界 · 实现代码"},"page":{"id":"reading-opening","title":"5. 读真实图、真实曲线与失败边界 · 实现代码","number":1},"sectionTitle":"5. 读真实图、真实曲线与失败边界 · 实现代码","currentQuestion":"5. 读真实图、真实曲线与失败边界 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-936a2100f5c47463495df8df","prerequisites":[],"relatedBlocks":[]},{"id":"b-936a2100f5c47463495df8df","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/1a6a0f13eab24338b41badd5b17c9678.html#b-936a2100f5c47463495df8df","content":"# 5. 读真实图、真实曲线与失败边界 · 实现代码","sha256":"36a8c231fe18626fe64990cd02ae630ea712070c9b815efcf950bb35751a5243","chapter":{"id":"course","title":"5. 读真实图、真实曲线与失败边界 · 实现代码"},"unit":{"id":"notebook-blocks/1a6a0f13eab24338b41badd5b17c9678","title":"5. 读真实图、真实曲线与失败边界 · 实现代码"},"page":{"id":"reading-opening","title":"5. 读真实图、真实曲线与失败边界 · 实现代码","number":1},"sectionTitle":"5. 读真实图、真实曲线与失败边界 · 实现代码","currentQuestion":"5. 读真实图、真实曲线与失败边界 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-7cbb12ec543a48564c5a95e3","nextBlock":"b-72ba80532ffcfe35b9ec4b39","prerequisites":[{"id":"b-7cbb12ec543a48564c5a95e3","url":"#b-7cbb12ec543a48564c5a95e3","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-72ba80532ffcfe35b9ec4b39","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/1a6a0f13eab24338b41badd5b17c9678.html#b-72ba80532ffcfe35b9ec4b39","content":"按问题继续","sha256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","chapter":{"id":"course","title":"5. 读真实图、真实曲线与失败边界 · 实现代码"},"unit":{"id":"notebook-blocks/1a6a0f13eab24338b41badd5b17c9678","title":"5. 读真实图、真实曲线与失败边界 · 实现代码"},"page":{"id":"reading-opening","title":"5. 读真实图、真实曲线与失败边界 · 实现代码","number":1},"sectionTitle":"5. 读真实图、真实曲线与失败边界 · 实现代码","currentQuestion":"5. 读真实图、真实曲线与失败边界 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-936a2100f5c47463495df8df","nextBlock":"b-fa5a70231b008dc1cad07bab","prerequisites":[{"id":"b-936a2100f5c47463495df8df","url":"#b-936a2100f5c47463495df8df","role":"section-title"},{"id":"b-7cbb12ec543a48564c5a95e3","url":"#b-7cbb12ec543a48564c5a95e3","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-fa5a70231b008dc1cad07bab","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/1a6a0f13eab24338b41badd5b17c9678.html#b-fa5a70231b008dc1cad07bab","content":"真实CNN–GRU条件训练与greedy/beam生成、遮图/错图消融","sha256":"6a611aef342a7535362f318ee0c33b63170ce4ab853fa44a05f76a04873fd320","chapter":{"id":"course","title":"5. 读真实图、真实曲线与失败边界 · 实现代码"},"unit":{"id":"notebook-blocks/1a6a0f13eab24338b41badd5b17c9678","title":"5. 读真实图、真实曲线与失败边界 · 实现代码"},"page":{"id":"reading-opening","title":"5. 读真实图、真实曲线与失败边界 · 实现代码","number":1},"sectionTitle":"5. 读真实图、真实曲线与失败边界 · 实现代码","currentQuestion":"5. 读真实图、真实曲线与失败边界 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-72ba80532ffcfe35b9ec4b39","nextBlock":"b-ae6afae0eda242225ad9bc15","prerequisites":[{"id":"b-936a2100f5c47463495df8df","url":"#b-936a2100f5c47463495df8df","role":"section-title"},{"id":"b-7cbb12ec543a48564c5a95e3","url":"#b-7cbb12ec543a48564c5a95e3","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-ae6afae0eda242225ad9bc15","type":"pre","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/1a6a0f13eab24338b41badd5b17c9678.html#b-ae6afae0eda242225ad9bc15","content":"```\nfig,axes=plt.subplots(2,3,figsize=(10,6))\nchosen=[0,3,7,10,14,17]\nfor ax,i in zip(axes.flat,chosen):\n    ax.imshow(Xtest[i].permute(1,2,0)); ax.axis('off')\n    ax.set_title('truth: '+test_text[i]+'\\ngreedy: '+pred[i]+'\\nbeam: '+beam_pred[i],fontsize=9)\nfig.suptitle('LAB13: held-out images; model-generated captions',fontsize=13); fig.tight_layout()\nfig.savefig(OUT/'lab13-caption-predictions.png',dpi=160); plt.show(); plt.close(fig)\nfig,axes=plt.subplots(1,2,figsize=(10,3.4))\naxes[0].plot([r['epoch'] for r in curve],[r['train_token_ce'] for r in curve],label='train'); axes[0].plot([r['epoch'] for r in curve],[r['heldout_teacher_forced_ce'] for r in curve],label='held-out'); axes[0].set(xlabel='epoch',ylabel='mean non-pad token CE');axes[0].legend()\nlabels=['greedy','beam 3','zero image','shuffled image'];values=[metrics[k] for k in ['greedy_exact_match','beam3_exact_match','zero_pixels_exact_match','shuffled_pixels_exact_match']]\naxes[1].bar(labels,values,color=['#356b91','#40868e','#a9adb0','#a9adb0']);axes[1].set(ylim=(0,1.12),ylabel='exact caption accuracy (180 images)')\nfor i,v in enumerate(values):axes[1].text(i,v+.025,f'{v:.1%}',ha='center')\nfig.tight_layout();fig.savefig(OUT/'lab13-caption-controls.png',dpi=160);plt.show();plt.close(fig)\nfig,axes=plt.subplots(1,3,figsize=(9,3))\nfor ax,x,row in zip(axes,control_pixels,controls):\n    ax.imshow(x.permute(1,2,0));ax.axis('off');ax.set_title('prefix: <bos> a\\n'+row['generated'],fontsize=10)\nfig.tight_layout();fig.savefig(OUT/'lab13-same-prefix.png',dpi=160);plt.show();plt.close(fig)\nresult={'notebook_id':'3da47f3ee3554ee0a36e0bb6a2fdc61f','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':13031,'test_seed':13033,'train_images':720,'test_images':180,'description':'independent noisy renders; same 18 semantic combinations on both sides; no compositional/general-photo claim'},'metrics':metrics,'curve':curve,'same_prefix_controls':controls,'predictions':[{'truth':t,'greedy':p,'beam3':b,'zero':z,'shuffled':s} for t,p,b,z,s in zip(test_text,pred,beam_pred,zero_pred,shuffle_pred)],'weight_sha256':hashlib.sha256((OUT/'lab13-caption-weights.pt').read_bytes()).hexdigest(),'data_sha256':hashlib.sha256((OUT/'lab13-data.npz').read_bytes()).hexdigest()}\n(OUT/'lab13-results.json').write_text(json.dumps(result,indent=2))\nprint('saved',OUT,'seconds',round(result['elapsed_seconds'],2))\n```","sha256":"fe6b7b975ffb43f76795d7a6d1dd588c056cfb2c1266f38d7307a533a1177f11","chapter":{"id":"course","title":"5. 读真实图、真实曲线与失败边界 · 实现代码"},"unit":{"id":"notebook-blocks/1a6a0f13eab24338b41badd5b17c9678","title":"5. 读真实图、真实曲线与失败边界 · 实现代码"},"page":{"id":"reading-opening","title":"5. 读真实图、真实曲线与失败边界 · 实现代码","number":1},"sectionTitle":"5. 读真实图、真实曲线与失败边界 · 实现代码","currentQuestion":"5. 读真实图、真实曲线与失败边界 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-fa5a70231b008dc1cad07bab","nextBlock":null,"prerequisites":[{"id":"b-936a2100f5c47463495df8df","url":"#b-936a2100f5c47463495df8df","role":"section-title"},{"id":"b-7cbb12ec543a48564c5a95e3","url":"#b-7cbb12ec543a48564c5a95e3","role":"problem-context"}],"relatedBlocks":[]}]}
