Lecture 03 学习讲义
正文
工具
按问题查找
Lecture 03不只看一条平均曲线 · 实现代码

不只看一条平均曲线 · 实现代码

独立阅读

按问题继续

固定CNN与缓存特征、标签预算、kNN/linear和独立评价

展开完整实现代码
pred_knn=fitted[('kNN',256)].predict(features[heldout]); pred_linear=fitted[('linear',256)].predict(features[heldout])
error_local=np.flatnonzero((pred_knn!=y[heldout])|(pred_linear!=y[heldout]))[:8]
fig,axes=plt.subplots(2,4,figsize=(10,5.5))
for ax in axes.ravel():ax.axis('off')
for ax,j in zip(axes.ravel(),error_local):
    i=heldout[j];ax.imshow(x[i,0],cmap='gray',vmin=0,vmax=1)
    ax.set_title(f'id {sample_ids[i]} · digit={digits[i]}, y={y[i]}\nkNN={pred_knn[j]}, linear={pred_linear[j]}',fontsize=9)
savefig('04-readout-errors.png')
agreement={'both_correct':int(((pred_knn==y[heldout])&(pred_linear==y[heldout])).sum()),
 'knn_only_correct':int(((pred_knn==y[heldout])&(pred_linear!=y[heldout])).sum()),
 'linear_only_correct':int(((pred_knn!=y[heldout])&(pred_linear==y[heldout])).sum()),
 'both_wrong':int(((pred_knn!=y[heldout])&(pred_linear!=y[heldout])).sum())}
assert sum(agreement.values())==len(heldout)
(OUT/'error-groups.json').write_text(json.dumps(agreement,indent=2));print(agreement)