{"version":2,"relationshipURLBase":"https://codingai-lec03.pages.dev/course/notebook-blocks/9ac44bfb569543debd1b305a066b77bb.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/9ac44bfb569543debd1b305a066b77bb.html","markdown":"https://codingai-lec03.pages.dev/course/notebook-blocks/9ac44bfb569543debd1b305a066b77bb.md","pages":[{"id":"reading-opening","title":"参数更新和三个单条件比较 · 实现代码","unit":"参数更新和三个单条件比较 · 实现代码","unitId":"notebook-blocks/9ac44bfb569543debd1b305a066b77bb","chapter":"course","number":1}],"aliases":[{"oldId":"b-c272599ee658d1c297507858","targetId":"b-c272599ee658d1c297507858","page":"reading-opening","operation":"move","beforeSHA256":"f6dfd09a50caab375f02e0abcc3ff7a454ea579ed8eef0c35b95c95b0619c304","afterSHA256":"f6dfd09a50caab375f02e0abcc3ff7a454ea579ed8eef0c35b95c95b0619c304","reason":"Same source body in authored semantic page"},{"oldId":"b-9097a7be33f211c20bcbff34","targetId":"b-9097a7be33f211c20bcbff34","page":"reading-opening","operation":"move","beforeSHA256":"9fab536815fa25e7ec4f4cdfff09b63be580a962ee0c201d9a517a56d3344371","afterSHA256":"9fab536815fa25e7ec4f4cdfff09b63be580a962ee0c201d9a517a56d3344371","reason":"Same source body in authored semantic page"},{"oldId":"b-131dc9db2b5b2ce1fc46c74e","targetId":"b-131dc9db2b5b2ce1fc46c74e","page":"reading-opening","operation":"move","beforeSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","afterSHA256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","reason":"Same source body in authored semantic page"},{"oldId":"b-49f01c8be464caee2ac644d5","targetId":"b-49f01c8be464caee2ac644d5","page":"reading-opening","operation":"move","beforeSHA256":"6f0b115c3c32032428a4c0d5ec4791e16d6b63aa3d643457bed758bf6af2b765","afterSHA256":"6f0b115c3c32032428a4c0d5ec4791e16d6b63aa3d643457bed758bf6af2b765","reason":"Same source body in authored semantic page"},{"oldId":"b-5f34be7201adb3cb15ffc528","targetId":"b-5f34be7201adb3cb15ffc528","page":"reading-opening","operation":"move","beforeSHA256":"9280d9f051fba81f9736060d652c337abb09125136855ddeff5476d73d4ad9c5","afterSHA256":"9280d9f051fba81f9736060d652c337abb09125136855ddeff5476d73d4ad9c5","reason":"Same source body in authored semantic page"}],"blocks":[{"id":"b-c272599ee658d1c297507858","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/9ac44bfb569543debd1b305a066b77bb.html#b-c272599ee658d1c297507858","content":"[LAB 11 · 从 RGB 到像素：读出、FCN 与边界](/course/notebooks/9e268706471944e3a59e6f568f9ce9a3.html)","sha256":"f6dfd09a50caab375f02e0abcc3ff7a454ea579ed8eef0c35b95c95b0619c304","chapter":{"id":"course","title":"参数更新和三个单条件比较 · 实现代码"},"unit":{"id":"notebook-blocks/9ac44bfb569543debd1b305a066b77bb","title":"参数更新和三个单条件比较 · 实现代码"},"page":{"id":"reading-opening","title":"参数更新和三个单条件比较 · 实现代码","number":1},"sectionTitle":"参数更新和三个单条件比较 · 实现代码","currentQuestion":"参数更新和三个单条件比较 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":null,"nextBlock":"b-9097a7be33f211c20bcbff34","prerequisites":[],"relatedBlocks":[]},{"id":"b-9097a7be33f211c20bcbff34","type":"h1","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/9ac44bfb569543debd1b305a066b77bb.html#b-9097a7be33f211c20bcbff34","content":"# 参数更新和三个单条件比较 · 实现代码","sha256":"9fab536815fa25e7ec4f4cdfff09b63be580a962ee0c201d9a517a56d3344371","chapter":{"id":"course","title":"参数更新和三个单条件比较 · 实现代码"},"unit":{"id":"notebook-blocks/9ac44bfb569543debd1b305a066b77bb","title":"参数更新和三个单条件比较 · 实现代码"},"page":{"id":"reading-opening","title":"参数更新和三个单条件比较 · 实现代码","number":1},"sectionTitle":"参数更新和三个单条件比较 · 实现代码","currentQuestion":"参数更新和三个单条件比较 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-c272599ee658d1c297507858","nextBlock":"b-131dc9db2b5b2ce1fc46c74e","prerequisites":[{"id":"b-c272599ee658d1c297507858","url":"#b-c272599ee658d1c297507858","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-131dc9db2b5b2ce1fc46c74e","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/9ac44bfb569543debd1b305a066b77bb.html#b-131dc9db2b5b2ce1fc46c74e","content":"按问题继续","sha256":"e91f24e4e4ca40e2099a0d81d30db6568f4bf2074b499eeee6e3959617bd97ac","chapter":{"id":"course","title":"参数更新和三个单条件比较 · 实现代码"},"unit":{"id":"notebook-blocks/9ac44bfb569543debd1b305a066b77bb","title":"参数更新和三个单条件比较 · 实现代码"},"page":{"id":"reading-opening","title":"参数更新和三个单条件比较 · 实现代码","number":1},"sectionTitle":"参数更新和三个单条件比较 · 实现代码","currentQuestion":"参数更新和三个单条件比较 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-9097a7be33f211c20bcbff34","nextBlock":"b-49f01c8be464caee2ac644d5","prerequisites":[{"id":"b-9097a7be33f211c20bcbff34","url":"#b-9097a7be33f211c20bcbff34","role":"section-title"},{"id":"b-c272599ee658d1c297507858","url":"#b-c272599ee658d1c297507858","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-49f01c8be464caee2ac644d5","type":"p","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/9ac44bfb569543debd1b305a066b77bb.html#b-49f01c8be464caee2ac644d5","content":"前景/背景/mIoU口径、RGB到mask训练、FCN与1×1读出及边界","sha256":"6f0b115c3c32032428a4c0d5ec4791e16d6b63aa3d643457bed758bf6af2b765","chapter":{"id":"course","title":"参数更新和三个单条件比较 · 实现代码"},"unit":{"id":"notebook-blocks/9ac44bfb569543debd1b305a066b77bb","title":"参数更新和三个单条件比较 · 实现代码"},"page":{"id":"reading-opening","title":"参数更新和三个单条件比较 · 实现代码","number":1},"sectionTitle":"参数更新和三个单条件比较 · 实现代码","currentQuestion":"参数更新和三个单条件比较 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-131dc9db2b5b2ce1fc46c74e","nextBlock":"b-5f34be7201adb3cb15ffc528","prerequisites":[{"id":"b-9097a7be33f211c20bcbff34","url":"#b-9097a7be33f211c20bcbff34","role":"section-title"},{"id":"b-c272599ee658d1c297507858","url":"#b-c272599ee658d1c297507858","role":"problem-context"}],"relatedBlocks":[]},{"id":"b-5f34be7201adb3cb15ffc528","type":"pre","scope":"document","url":"https://codingai-lec03.pages.dev/course/notebook-blocks/9ac44bfb569543debd1b305a066b77bb.html#b-5f34be7201adb3cb15ffc528","content":"```\n%%writefile -a lab11_segmentation.py\ndef train_model(model,x,target,epochs,lr):\n    opt=torch.optim.Adam(model.parameters(),lr=lr);history=[]\n    for epoch in range(epochs):\n        model.train();losses=[]\n        for ids in torch.randperm(len(x)).split(32):\n            images=x[ids];labels=target[ids]\n            # One geometric decision applies to both image and mask.\n            if torch.rand(())<.5:images=images.flip(-1);labels=labels.flip(-1)\n            logits=model(images)\n            assert logits.shape==(len(ids),3,48,48) and labels.dtype==torch.long\n            loss=F.cross_entropy(logits,labels,ignore_index=255)\n            opt.zero_grad();loss.backward();opt.step();losses.append(float(loss.detach()))\n        history.append(float(np.mean(losses)))\n        if epoch==0 or (epoch+1)%5==0:print(type(model).__name__,epoch+1,history[-1],flush=True)\n    return history\n\n@torch.no_grad()\ndef predict(model,x,mode='bilinear'):\n    model.eval();return torch.cat([model(b,mode=mode).argmax(1) for b in x.split(32)])\n\ndef plot_predictions(images,truth,pred,path,title,indices=None):\n    if indices is None:indices=[0,1,2,3]\n    palette=np.array([[.04,.04,.05],[.95,.22,.15],[.10,.45,1],[.55,.55,.55]])\n    fig,axes=plt.subplots(len(indices),4,figsize=(10,2.6*len(indices)),squeeze=False)\n    for row,i in enumerate(indices):\n        mask=truth[i].numpy().copy();mask[mask==255]=3\n        error=(pred[i]!=truth[i])&(truth[i]!=255)\n        data=[images[i].permute(1,2,0).numpy(),palette[mask],palette[pred[i].numpy()],error.numpy()]\n        for ax,d,name in zip(axes[row],data,['Input RGB','Target / gray=ignore','Model prediction','Error on valid pixels']):\n            ax.imshow(d,cmap='magma',interpolation='nearest');ax.axis('off');ax.set_title(f'{name} #{i}',fontsize=9)\n    fig.suptitle(title);fig.tight_layout();fig.savefig(path,dpi=140);plt.close(fig)\n\n\n```","sha256":"9280d9f051fba81f9736060d652c337abb09125136855ddeff5476d73d4ad9c5","chapter":{"id":"course","title":"参数更新和三个单条件比较 · 实现代码"},"unit":{"id":"notebook-blocks/9ac44bfb569543debd1b305a066b77bb","title":"参数更新和三个单条件比较 · 实现代码"},"page":{"id":"reading-opening","title":"参数更新和三个单条件比较 · 实现代码","number":1},"sectionTitle":"参数更新和三个单条件比较 · 实现代码","currentQuestion":"参数更新和三个单条件比较 · 实现代码","sourceSlides":[],"knowledgeBlock":null,"formulas":[],"previousBlock":"b-49f01c8be464caee2ac644d5","nextBlock":null,"prerequisites":[{"id":"b-9097a7be33f211c20bcbff34","url":"#b-9097a7be33f211c20bcbff34","role":"section-title"},{"id":"b-c272599ee658d1c297507858","url":"#b-c272599ee658d1c297507858","role":"problem-context"}],"relatedBlocks":[]}]}
