1、ImageDataBunch 对数据封装的很好,包括预处理都在这里面完成了
2、models 现有模型及权重
2-1 create_body 可以用来获取现有模型的主体结构
2-2 create_head 可以用来创建 分类器的全连接层,加了 flat, norm归一化在里面,效果比较好
3、learner, 数据,模型,loss函数与 学习方法的合体
3-1 create_cnn 用来创建 fastai内置好的 lerner, 效果比较好。 之前没完全弄得,弄个模型就想网 create_cnn里面塞,导致报错,应该是 切分和 分层没配置。
learner任意模型放到 learner里面就能用,但是效果没有 create_cnn的好。应该还是 分层没对的结果。这个还要调试。
4、迁移学习时的冻结和解冻 learn.freeze()learn.unfreeze()都有对分层做这里,这就是还需要研究的地方。把learner的效果做成和 create_cnn的效果一样。
cut 可以是数字或者是返回骨架的一个函数——待会尝试下
split_on 是一个函数,急需验证下——太神奇了,应用了该技术后,收敛明细加快。
def _resnet_split(m:nn.Module): return (m[0][6],m[1])
是分成了3个group, 前面0-5,6到最后,然后是头部
cut -1,-2好些有点不对