はじめに
Pytorchでディープラーニングの学習をつくりながら学ぶ!PyTorchによる発展ディープラーニングを参考に進めているのですが、いざ学習のところでcontinueやwithが出てきてなんとなくの理解だったのでbreakとセットでまとめます。
continue
for文での処理中に使用する。
continueを使うとそれ以降の処理をせずにfor文の先頭に戻って次の値から 繰り返し処理を再開する。
for i in range(5):
if i == 2:
continue
print(i)
0
1
3
4
iに0~4までの整数値を代入していき、それを表示する処理。
if文でiが2の時はcontinueとすることで、printされない。
Pytorchでは、epochが0の時は学習を省略するなどの例がある。
break
breakもfor文の中で使い、それ以降の処理を行わず、for文の繰り返し処理も中断する。
for i in range(5):
if i == 3:
break
print(i)
0
1
2
iに0から4までの整数値を代入していく。iが3の時にbreakとなっているので、そこで以降の処理は行わず、for文の繰り返し処理も中止となりiに4を代入することなく終了。
Pytorchの例で考えれば、学習結果があまり変化ない時に強制的に学習を中断するとかで活用できるのかな。
with
開始と終了がセットになる処理においてwithを使うと終了の処理を書かなくても、自動的に終了してくれるもの。
with open('sample.txt', 'r') as f:
print(f.read())
ファイルを開いた場合、必ず閉じる必要があるが、with文を使えばf.close()という閉じる処理を書かなくて済む・書き忘れてエラーになることがない・コードが短くなるなどのメリットが。
Pytorchの例だと、trainモードの時には損失を必ず計算して、evalモードの時にはしないなどで活用する。
まとめ
こういう基礎も怠らず、理解していきたい。