[Li Hongyi2022機械学習春]hw3_CNN(ボスベースライン)

実験記録

ここに画像の説明を挿入
単一のモデル、224:サイズ変更224
ここに画像の説明を挿入
ここに画像の説明を挿入
2つのモデルがアンサンブルとして使用され、プライベートは
ここに画像の説明を挿入
テスト時間拡張の役割を検証するためのボスベースラインを通過しておらず、機能し、0.01
ここに画像の説明を挿入
ここに画像の説明を挿入
テスト時間拡張+アンサンブル増加します

ここに画像の説明を挿入

グレーディング

ここに画像の説明を挿入

褒美

  1. 上司のベースラインに近い単一モデルのトレーニングを行う必要がありますTest Time Augmentation + ensemble
  2. Test Time Augmentationテストでは、さらにいくつかの画像を変換し、一緒にアンサンブルします。変換はランダムであるため、効果が少し悪くなる可能性があります。ここでは2回実行します。また、別々に写真を撮る必要があるため、バッチ予測ができないため(コードの記述が不十分な場合もあります)、速度が非常に遅くなります。これは、1つずつ予測するのと同じです。Test Time Augmentationちょっとフーリガンです。同様の方法は、5クロップ(4つのコーナー+中央)、10クロップ(5クロップ+フリップ)
    です。ディープラーニングの1クロップと10クロップとは何ですか?
  3. ensemble一般的な方法は次のとおりです。1。平均直接確率;2。投票、またはカスケード投票でさえ、昨年の作業のいくつかの改善アイデアを参照してください
  4. 相互検証は行われません。行わない場合は、トレーニングセットと検証セットの比率を再分割できます(サンプルコード= 3:1、5:1にすることができます)。検証セットのみが使用されます。過剰適合があるかどうかを確認するために、それは多くを必要としません。
  5. 相互検証は、複数のモデルをトレーニングすることと同等であり、アンサンブルを実行するためにコードの2つのコピーを実行することは同じ効果です。
  6. ================================================== ===================
  7. データエンハンスメントセクション:一般的に、ランダムトリミングと色変換は非常に効果的です。公式ライブラリのトレーニングコードを参照できます。詳細については、画像分類トレーニングスキルのデータ拡張の章を参照してください。パッケージ化されたデータ拡張もありますTrivialAugmentが、異なるデータセットには適用できない場合があります。
  8. より高度なデータ拡張mixupは機能しません。機能しません。
  9. データの強化により、トレーニングとテスト中に一貫性のないオブジェクト解像度が発生します。次に、この問題を改善するためにFixRes戦略が提案されます。定期的なトレーニングの後、より大きな解像度を使用して、分類子またはモデルの最後の数層を微調整します> https:// zhuanlan.zhihu.com/p/347537453
  10. モデル設計課:自分でCNNを実行し、224から始まる最大プールでダウンサンプリングし、最後にグローバル最大プーリングをself.pooling = torch.nn.AdaptiveMaxPool2d((1, 1))実行します。これは、事前定義されたresnet18を直接使用する場合と同様です。一般的に、完全に接続されたレイヤーは分類ヘッドとしてのみ使用できます。
  11. ダウンサンプリングまたは最大プールに畳み込みストライドを使用することを検討してください。詳細については、「変換ストライドまたはプールを使用したダウンサンプリング?」を参照してください。結論:畳み込みニューラルネットワークは小さく、最大プールと畳み込みを使用します(resnetは畳み込みストライドで実装されたダウンサンプリングです)。
  12. conv + bn + relu、Resnet_bn_reluアクティベーション後+またはアクティベーション前?結論:活性化関数の前
  13. ================================================== ============
  14. トレーニングパートnn.utils.clip_grad_norm_勾配クリッピング、早期打ち切り戦略、train_acc、train_lossとval_acc、val_lossの間のギャップをチェックするための描画により、過剰適合があるかどうかを判断します
  15. オプティマイザが直接使用する学習率とサンプルコードは、コサインアニーリング学習率を使用しません。次回はコサイン減衰学習率を使用できます。一般的に、トレーニングが多いほど、学習率は低くなります。
  16. 80エポックはほぼ収束しました。一般的に、100エポックを設定することはほとんど同じです。
  17. その他のトリック:ラベルの平滑化、FacalLoss…
    ここに画像の説明を挿入
  18. 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
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43154149/article/details/123943748