fastai06-Muticat
多标签分类问题
如图,图片-->多标签分类,数据集是这样的
观察labels的特点我们发现,labels的种类有猫,狗,自行车,飞机多种, 且一张图片中可能有多个种类,为此我们对labels采取one-hot编码
One-hot 编码
以前只有两类猫和狗,用0,1编码就够了,现在出现了dog, car, bird, cat, ...多个种类,而且在一张图片中可能出现多种种类(如下图),而PyTorch 需要张量,其中所有内容的长度都必须相同.所以使用词汇表到one-hot映射这种编码方式
一捆数据的激活是这样的
了解如何手动获取小批量并将其传递到模型中,并查看激活和丢失,对于调试模型非常重要。这对学习也非常有帮助,这样你就可以准确地看到发生了什么。
partial函数
它允许我们将函数与一些参数或关键字参数绑定,从而创建该函数的新版本,无论何时调用它,它总是包含这些参数。通过示例很好理解
计算损失时变化不大
def binary_cross_entropy(inputs, targets):
inputs = inputs.sigmoid()
return -torch.where(targets==1, inputs, 1-inputs).log().mean()
在预测时引入阈值,我感觉这个阈值不会影响loss吧,但是会影响正确率,可以在训练完了之后用下面的方法找合适的阈值
回归问题
图像-->点坐标, 需要注意在数据增强的过程中点坐标也要数据增强,另外在创建学习器时指定了y的范围
learn = vision_learner(dls, resnet18, y_range=(-1,1))
它是根据下面这个函数实现的
然后寻找lr, 训练并展示结果,看起来fastai自动的帮我们完成了大量的工作