fastai07-Sizing and Tta

本章主要是介绍了几种先进技术

Normalization | 归一化

这个在 Andrej Karpathy的视频里讲得更清楚

Neural Networks: Zero to Hero
Share your videos with friends, family, and the world

fastai先是给出了结论

在训练模型时,如果输入数据被归一化(即均值为 0,标准差为 1),训练效果会更好。

然后给了一个例子, 对比了有批量归一化层和没有批量归一化层,其实效果差不多,但是

虽然它在这里只起了一点作用,但在使用预训练模型时,归一化变得尤为重要。预训练模型只知道如何处理它以前见过的类型的数据。如果用于训练的数据中的平均像素值为 0,但您的数据将 0 作为像素的最小可能值,那么模型将看到与预期截然不同的内容!

Progressive Resizing | 渐进式调整大小

基本思想

从小图像开始训练,然后使用大图像结束训练。将大部分时间花在小图像上训练,有助于更快地完成训练。使用大图像完成训练可以使最终精度更高。

screenshot_06032024_205409.png

Test Time Augmentation | 测试时间增强

基本思想

在推理或验证过程中,使用数据增强创建每个图像的多个版本,然后对每个增强版本的图像的预测结果取平均值或最大值。
preds,targs = learn.tta()
accuracy(preds, targs).item()

Mixup | 混合

一张图说明一切

satty-20240307-09:35:16.png

第三张图像是通过加上第一张图像的0.3倍和第二张图像的0.7倍构建的.假设我们有10个类别,"教堂"由索引2表示,"加油站"由索引7表示,那么one-hot编码的表示是:

[0, 0, 1, 0, 0, 0, 0, 0, 0, 0] and [0, 0, 0, 0, 0, 0, 0, 1, 0, 0]

因此我们的目标target是

[0, 0, 0.3, 0, 0, 0, 0, 0.7, 0, 0]

因为我们在每个周期中展示的不是同一张图片,而是两张图片的随机组合,Mixup可以有效的防止过拟合.另外Mixup帮我们处理了另一个微妙的问题,那就是我们以前看到的模型实际上无法使我们的损失完美.原因在于我们的标签是1和0,但是softmax和sigmoid的输出永远不能等于1或0.这意味着训练我们的模型会使我们的激活值越来越接近这些值,以至于我们做的epoch越多,我们的激活值就会变得越极端.

Label Smoothing | 标签平滑

基本思想

你的数据永远不会完美.我们可以用稍小于1的数替换所有的1,用稍大于0的数替换所有的0,然后进行训练。这就叫做标签平滑。通过鼓励你的模型不要过于自信,标签平滑会使你的训练更加稳健,即使存在标签错误的数据。结果将是一个泛化能力更强的模型。

具体替换规则是这样的.用 ϵ/N 替换所有的0,其中 N 是类别的数量, ϵ 是一个参数(通常为0.1,这意味着我们对我们的标签有10%的不确定性).由于我们希望标签的总和为1,所以将1替换为 1−ϵ+ϵN.

[0.01, 0.01, 0.01, 0.91, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01]

Read more

fastai14-Resnet

卷积神经网络有这样两个问题 * 我们需要大量的步长为 2 的层来使我们的网格在最后变成 1×1 * 无法在除我们最初训练的尺寸之外的任何尺寸的图像上工作 全卷积网络 | fully convolutional networks def avg_pool(x): return x.mean((2,3)) 前面正常卷积, 剩下的直接求平均 def block(ni, nf): return ConvLayer(ni, nf, stride=2) def get_model(): return nn.Sequential( block(3, 16), block(16, 32), block(32, 64), block(64, 128)

By kamado nezuko

pt命令行做种

发布种子各站点都有教程, 奈何使用的qb下载器为qbittorrent-nox, 没有直接生成torrent文件的选项, google发现可以使用transmission-cli命令行生成torrent 安装 sudo apt install transmission-cli 生成torrent种子 transmission-create -p -o path/to/example.torrent --tracker tracker_announce_url --piecesize 2048 path/to/file_or_directory * -p: 私有种子,不使用 DHT * -o: 生成 torrent 文件路径 * -t: tracker 地址 * -s: 每个文件块大小(参考下表) 文件大小 文件块大小 0 GB - 0.5 GB

By kamado nezuko