{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348.html","relationshipResolution":"Resolve relative relationship URLs against relationshipURLBase; complete records and absolute URLs are in blocks.","title":"1. 先写预测，再确定协议 · 实现代码","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348.md","pages":[{"id":"reading-opening","title":"1. 先写预测，再确定协议 · 实现代码","unit":"1. 先写预测，再确定协议 · 实现代码","unitId":"notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348","chapter":"course","number":1}],"aliases":[{"oldId":"b-c4b44ce5c8b04ee09dbb3218","targetId":"b-c4b44ce5c8b04ee09dbb3218","page":"reading-opening","operation":"move","beforeSHA256":"f107bd31e942a5cf605f3183c89731efbb5349a4bf8c063087e5d29bebde50b5","afterSHA256":"f107bd31e942a5cf605f3183c89731efbb5349a4bf8c063087e5d29bebde50b5","reason":"Same source body in authored semantic page"},{"oldId":"b-9beb3ec15f09826535a3de5b","targetId":"b-9beb3ec15f09826535a3de5b","page":"reading-opening","operation":"move","beforeSHA256":"6e8f7835172cd91a97338bf76ddbadf988a539effdc7b5b4c073e7be4a521226","afterSHA256":"6e8f7835172cd91a97338bf76ddbadf988a539effdc7b5b4c073e7be4a521226","reason":"Same source body in authored semantic page"},{"oldId":"b-cfaf75cb7ca9ebb63f866866","targetId":"b-cfaf75cb7ca9ebb63f866866","page":"reading-opening","operation":"move","beforeSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","afterSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","reason":"Same source body in authored semantic page"},{"oldId":"b-ad92da078d15e09e69e7b9d0","targetId":"b-ad92da078d15e09e69e7b9d0","page":"reading-opening","operation":"move","beforeSHA256":"5f1e2e7a35a6afaca427b0b03cfec448b4aac4324b16108f14671986a2d98b38","afterSHA256":"5f1e2e7a35a6afaca427b0b03cfec448b4aac4324b16108f14671986a2d98b38","reason":"Same source body in authored semantic page"},{"oldId":"b-6caff00a1fd2fec378472ce0","targetId":"b-6caff00a1fd2fec378472ce0","page":"reading-opening","operation":"move","beforeSHA256":"02d74538e6f7284ba314ae174996ba31ae91ac9421566e640487993906ec5454","afterSHA256":"02d74538e6f7284ba314ae174996ba31ae91ac9421566e640487993906ec5454","reason":"Same source body in authored semantic page"}],"blocks":[{"id":"b-c4b44ce5c8b04ee09dbb3218","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348.html#b-c4b44ce5c8b04ee09dbb3218","content":"[LAB 02 · 参数迁移：冻结、局部与全量微调](/course/notebooks/4bd450d54870432db91c80a4df563b8e.html)","sha256":"f107bd31e942a5cf605f3183c89731efbb5349a4bf8c063087e5d29bebde50b5","chapter":{"id":"course","title":"1. 先写预测，再确定协议 · 实现代码"},"unit":{"id":"notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348","title":"1. 先写预测，再确定协议 · 实现代码"},"page":{"id":"reading-opening","title":"1. 先写预测，再确定协议 · 实现代码","number":1},"sectionTitle":"1. 先写预测，再确定协议 · 实现代码","currentQuestion":"1. 先写预测，再确定协议 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-9beb3ec15f09826535a3de5b","prerequisites":[],"relatedBlocks":[]},{"id":"b-9beb3ec15f09826535a3de5b","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348.html#b-9beb3ec15f09826535a3de5b","content":"# 1. 先写预测，再确定协议 · 实现代码","sha256":"6e8f7835172cd91a97338bf76ddbadf988a539effdc7b5b4c073e7be4a521226","chapter":{"id":"course","title":"1. 先写预测，再确定协议 · 实现代码"},"unit":{"id":"notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348","title":"1. 先写预测，再确定协议 · 实现代码"},"page":{"id":"reading-opening","title":"1. 先写预测，再确定协议 · 实现代码","number":1},"sectionTitle":"1. 先写预测，再确定协议 · 实现代码","currentQuestion":"1. 先写预测，再确定协议 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-c4b44ce5c8b04ee09dbb3218","nextBlock":"b-cfaf75cb7ca9ebb63f866866","prerequisites":[{"id":"b-c4b44ce5c8b04ee09dbb3218","url":"#b-c4b44ce5c8b04ee09dbb3218","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-cfaf75cb7ca9ebb63f866866","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348.html#b-cfaf75cb7ca9ebb63f866866","content":"按问题继续","sha256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","chapter":{"id":"course","title":"1. 先写预测，再确定协议 · 实现代码"},"unit":{"id":"notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348","title":"1. 先写预测，再确定协议 · 实现代码"},"page":{"id":"reading-opening","title":"1. 先写预测，再确定协议 · 实现代码","number":1},"sectionTitle":"1. 先写预测，再确定协议 · 实现代码","currentQuestion":"1. 先写预测，再确定协议 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-9beb3ec15f09826535a3de5b","nextBlock":"b-ad92da078d15e09e69e7b9d0","prerequisites":[{"id":"b-9beb3ec15f09826535a3de5b","url":"#b-9beb3ec15f09826535a3de5b","role":"section-title"},{"id":"b-c4b44ce5c8b04ee09dbb3218","url":"#b-c4b44ce5c8b04ee09dbb3218","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-ad92da078d15e09e69e7b9d0","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348.html#b-ad92da078d15e09e69e7b9d0","content":"同源参数的冻结/局部/全量/scratch与BN模式辨析","sha256":"5f1e2e7a35a6afaca427b0b03cfec448b4aac4324b16108f14671986a2d98b38","chapter":{"id":"course","title":"1. 先写预测，再确定协议 · 实现代码"},"unit":{"id":"notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348","title":"1. 先写预测，再确定协议 · 实现代码"},"page":{"id":"reading-opening","title":"1. 先写预测，再确定协议 · 实现代码","number":1},"sectionTitle":"1. 先写预测，再确定协议 · 实现代码","currentQuestion":"1. 先写预测，再确定协议 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-cfaf75cb7ca9ebb63f866866","nextBlock":"b-6caff00a1fd2fec378472ce0","prerequisites":[{"id":"b-9beb3ec15f09826535a3de5b","url":"#b-9beb3ec15f09826535a3de5b","role":"section-title"},{"id":"b-c4b44ce5c8b04ee09dbb3218","url":"#b-c4b44ce5c8b04ee09dbb3218","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-6caff00a1fd2fec378472ce0","type":"pre","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348.html#b-6caff00a1fd2fec378472ce0","content":"```\nTRAIN_LIMIT=256\nDX=2\nEPOCHS=4\nBATCH_SIZE=64\nLEARNING_RATE=0.002\nSEED=20260917\nwith np.load(io.BytesIO(asset_bytes['target.npz']),allow_pickle=False) as z:\n    target={k:z[k].copy() for k in z.files}\nprovenance=json.loads(asset_bytes['target-provenance.json'])\nassert 16<=TRAIN_LIMIT<=256 and -4<=DX<=4 and EPOCHS>=1\nx=torch.tensor(target['images'],dtype=torch.float32)/255\ndef shift_x(a,dx):\n    b=torch.zeros_like(a)\n    if dx>=0:b[:,:,:,dx:]=a[:,:,:,:a.shape[-1]-dx]\n    else:b[:,:,:,:dx]=a[:,:,:,-dx:]\n    return b\nx=shift_x(x,DX)\ny=torch.tensor((target['digit_labels']>=5).astype(np.int64))\ntrain_idx=np.flatnonzero(target['split']==0)[:TRAIN_LIMIT]\nval_idx=np.flatnonzero(target['split']==1)\nheldout_idx=np.flatnonzero(target['split']==2)\ntrain_x,train_y=x[train_idx],y[train_idx]\nval_x,val_y=x[val_idx],y[val_idx]\nassert len(set(target['official_train_ids']))==640\nassert not set(train_idx)&set(val_idx) and not set(train_idx)&set(heldout_idx)\nprint('训练/验证/保留：',len(train_idx),len(val_idx),len(heldout_idx),'固定横移',DX)\nprint('训练标签计数',torch.bincount(train_y,minlength=2).tolist(),'验证标签计数',torch.bincount(val_y,minlength=2).tolist())\nfig,axes=plt.subplots(1,8,figsize=(12,2))\nfor i,ax in enumerate(axes):\n    ax.imshow(train_x[i,0],cmap='gray',vmin=0,vmax=1);ax.set_title(f'digit {target[\"digit_labels\"][train_idx[i]]}: y={train_y[i].item()}');ax.axis('off')\nplt.show()\n\n```","sha256":"02d74538e6f7284ba314ae174996ba31ae91ac9421566e640487993906ec5454","chapter":{"id":"course","title":"1. 先写预测，再确定协议 · 实现代码"},"unit":{"id":"notebook-blocks/97b118d3eb0d429aaf8b3875bda3f348","title":"1. 先写预测，再确定协议 · 实现代码"},"page":{"id":"reading-opening","title":"1. 先写预测，再确定协议 · 实现代码","number":1},"sectionTitle":"1. 先写预测，再确定协议 · 实现代码","currentQuestion":"1. 先写预测，再确定协议 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-ad92da078d15e09e69e7b9d0","nextBlock":null,"prerequisites":[{"id":"b-9beb3ec15f09826535a3de5b","url":"#b-9beb3ec15f09826535a3de5b","role":"section-title"},{"id":"b-c4b44ce5c8b04ee09dbb3218","url":"#b-c4b44ce5c8b04ee09dbb3218","role":"problem-context"}],"relatedBlocks":[]}]}
