バッチ正規化
モデルアーキテクチャの最終的な改善として、2つの全結合(linear)層それぞれの後にバッチ正規化層を追加してみましょう。バッチ正規化のテクニックは、学習の収束を速め、vanishing/exploding gradients の問題からモデルを保護します。
torch.nn と torch.nn.init はそれぞれ nn と init としてすでにインポートされています。モデルアーキテクチャを変更したら、バッチ正規化の仕組みに関する短い質問に答える準備をしてください!
この演習はコースの一部です
PyTorchによる中級ディープラーニング
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
class Net(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(9, 16)
# Add two batch normalization layers
____ = ____
self.fc2 = nn.Linear(16, 8)
____ = ____
self.fc3 = nn.Linear(8, 1)
init.kaiming_uniform_(self.fc1.weight)
init.kaiming_uniform_(self.fc2.weight)
init.kaiming_uniform_(self.fc3.weight, nonlinearity="sigmoid")