記事ディレクトリ
実験記録
単一のモデル、224:サイズ変更224
2つのモデルがアンサンブルとして使用され、プライベートは
テスト時間拡張の役割を検証するためのボスベースラインを通過しておらず、機能し、0.01
テスト時間拡張+アンサンブル増加します
グレーディング
褒美
- 上司のベースラインに近い単一モデルのトレーニングを行う必要があります
Test Time Augmentation + ensemble
Test Time Augmentation
テストでは、さらにいくつかの画像を変換し、一緒にアンサンブルします。変換はランダムであるため、効果が少し悪くなる可能性があります。ここでは2回実行します。また、別々に写真を撮る必要があるため、バッチ予測ができないため(コードの記述が不十分な場合もあります)、速度が非常に遅くなります。これは、1つずつ予測するのと同じです。Test Time Augmentation
ちょっとフーリガンです。同様の方法は、5クロップ(4つのコーナー+中央)、10クロップ(5クロップ+フリップ)
です。ディープラーニングの1クロップと10クロップとは何ですか?ensemble
一般的な方法は次のとおりです。1。平均直接確率;2。投票、またはカスケード投票でさえ、昨年の作業のいくつかの改善アイデアを参照してください- 相互検証は行われません。行わない場合は、トレーニングセットと検証セットの比率を再分割できます(サンプルコード= 3:1、5:1にすることができます)。検証セットのみが使用されます。過剰適合があるかどうかを確認するために、それは多くを必要としません。
- 相互検証は、複数のモデルをトレーニングすることと同等であり、アンサンブルを実行するためにコードの2つのコピーを実行することは同じ効果です。
- ================================================== ===================
- データエンハンスメントセクション:一般的に、ランダムトリミングと色変換は非常に効果的です。公式ライブラリのトレーニングコードを参照できます。詳細については、画像分類トレーニングスキルのデータ拡張の章を参照してください。パッケージ化されたデータ拡張もあります
TrivialAugment
が、異なるデータセットには適用できない場合があります。 - より高度なデータ拡張
mixup
は機能しません。機能しません。 - データの強化により、トレーニングとテスト中に一貫性のないオブジェクト解像度が発生します。次に、この問題を改善するためにFixRes戦略が提案されます。定期的なトレーニングの後、より大きな解像度を使用して、分類子またはモデルの最後の数層を微調整します> https:// zhuanlan.zhihu.com/p/347537453
- モデル設計課:自分でCNNを実行し、224から始まる最大プールでダウンサンプリングし、最後にグローバル最大プーリングを
self.pooling = torch.nn.AdaptiveMaxPool2d((1, 1))
実行します。これは、事前定義されたresnet18を直接使用する場合と同様です。一般的に、完全に接続されたレイヤーは分類ヘッドとしてのみ使用できます。 - ダウンサンプリングまたは最大プールに畳み込みストライドを使用することを検討してください。詳細については、「変換ストライドまたはプールを使用したダウンサンプリング?」を参照してください。。結論:畳み込みニューラルネットワークは小さく、最大プールと畳み込みを使用します(resnetは畳み込みストライドで実装されたダウンサンプリングです)。
conv + bn + relu
、Resnet_bn_reluアクティベーション後+またはアクティベーション前?結論:活性化関数の前- ================================================== ============
- トレーニングパート:
nn.utils.clip_grad_norm_
勾配クリッピング、早期打ち切り戦略、train_acc、train_lossとval_acc、val_lossの間のギャップをチェックするための描画により、過剰適合があるかどうかを判断します - オプティマイザが直接使用する学習率とサンプルコードは、コサインアニーリング学習率を使用しません。次回はコサイン減衰学習率を使用できます。一般的に、トレーニングが多いほど、学習率は低くなります。
- 80エポックはほぼ収束しました。一般的に、100エポックを設定することはほとんど同じです。
- その他のトリック:ラベルの平滑化、FacalLoss…
- pytorchは、ネットワークの各レイヤーのパラメーターとディメンション情報を出力します
import torch.nn as nn
from torchsummary import summary
#定义网络结构
net = nn.Sequential(
nn.Conv2d(1,8,kernel_size=7),
nn.MaxPool2d(2,stride=2),
nn.ReLU(True),
nn.Conv2d(8,10,kernel_size=5),
nn.MaxPool2d(2,stride=2),
nn.ReLU(True)
)
#输出每层网络参数信息
summary(net,(1,28,28),batch_size=1,device="cpu")
————————————————
版权声明:本文为CSDN博主「修炼之路」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_29957455/article/details/112701029
参考文献
データエンハンスメントセクション
画像分類トレーニングスキルのデータ強化:https://zhuanlan.zhihu.com/p/430563265
https://zhuanlan.zhihu.com/p/347537453
[Pytorchスタディノート]データの強化:https://blog.csdn.net/Miao_sin/article/details/122474968
torchvision.transforms.RandomResizedCropメソッドの解釈:https://blog.csdn.net/qq_36915686/article/details/122136299
torchvision.transforms.ColorJitter(brightness = 0、contrast = 0、saturation = 0、hue = 0):
モデル選択設計セクション
ResNetの詳細な説明と分析:https://www.cnblogs.com/shine-lee/p/12363488.html
アクティベーション後+またはアクティベーション前のResnet_bn_relu?
差出人:https
://zhuanlan.zhihu.com/p/31852747差出人:https://www.cnblogs.com/shine-lee/p/12363488.html
ダウンサンプリングは、conv strideまたはpoolの実装を使用して実装されていますか?
から:https://zhuanlan.zhihu.com/p/46633171
トレーニングパート
nn.utils.clip_grad_norm_
差出人:https://blog.csdn.net/zhaohongfei_358/article/details/122820992
K分割交差検定
Kaggleを支配するためのディープラーニングのヒントトップ10
から:https://zhuanlan.zhihu.com/p/41379279