回答編集履歴

3

2020/03/10 15:03

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- GPU で演算を行なう場合、バッチサイズが大きいほうが、GPU とのデータ転送の回数がすくななるので、学習速度が早くなります。(GPU は一度に大量のデータを計算するのが得意)
5
+ GPU で演算を行なう場合、バッチサイズが大きいほうが、GPU とのデータ転送の回数がすくななるので、学習速度が早くなります。(GPU は一度に大量のデータを計算するのが得意)
6
6
 
7
7
  では、単純にバッチサイズを大きくすればいいのかというとそうではなく、以下の点を考慮して適当な値にします。
8
8
 
@@ -25,3 +25,29 @@
25
25
  ライブラリの実装によりますが、データセットのサンプル数より多い数をバッチサイズに指定した場合、「バッチサイズ = データセットのサンプル数」となります。(Pytorch ではそうなってます)
26
26
 
27
27
  質問の例の場合だと、1000000000 を指定してもサンプルが114個しかないなら batchsize=114 と同じ
28
+
29
+
30
+
31
+ ## 追記
32
+
33
+
34
+
35
+ > その理由はイテレーション数(データセットに含まれるデータが少なくとも1回は学習に用いられるのに必要な学習回数であり、バッチサイズが決まれば自動的に決まる数値)が少なくなることと同義でしょうか。
36
+
37
+
38
+
39
+ 「学習が早い」の定義について書いていませんでしたが、回答で言っている学習の速さとは、1エポックが完了するのにかかる時間のことを言っています。
40
+
41
+ 例えば、100個のサンプルがあったとしたとき、バッチサイズが5の場合は1エポックが20イテレーション、バッチサイズが20の場合は1エポックが5イテレーションで完了します。
42
+
43
+ イテレーションのたびにデータを GPU との間で転送する必要があるので、このイテレーションが少ないバッチサイズ20のほうが1エポックにかかる時間が少なくなります。
44
+
45
+
46
+
47
+ > 基本的な質問で恐縮ですが、バッチサイズは一行単位なのでしょうか?すなわち、(455,30)のデータセットに対してバッチサイズ1なら、「バッチサイズはデータポイントのすべての列を含む(一列目から30列目まで)」ということで合っているでしょうか。
48
+
49
+
50
+
51
+ 1行単位です。
52
+
53
+ コメントの例で batchsize = 32 なら、1つのミニバッチは (32, 30) の配列になります。

2

修正

2020/03/10 15:03

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- GPU で演算を行なう場合、バッチサイズが大きいほうが、GPU とのデータ転送の回数がすくなるなるので、学習速度が早くなります。
5
+ GPU で演算を行なう場合、バッチサイズが大きいほうが、GPU とのデータ転送の回数がすくなるなるので、学習速度が早くなります。(GPU は一度に大量のデータを計算するのが得意)
6
6
 
7
7
  では、単純にバッチサイズを大きくすればいいのかというとそうではなく、以下の点を考慮して適当な値にします。
8
8
 

1

修正

2020/03/10 11:41

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -23,3 +23,5 @@
23
23
 
24
24
 
25
25
  ライブラリの実装によりますが、データセットのサンプル数より多い数をバッチサイズに指定した場合、「バッチサイズ = データセットのサンプル数」となります。(Pytorch ではそうなってます)
26
+
27
+ 質問の例の場合だと、1000000000 を指定してもサンプルが114個しかないなら batchsize=114 と同じ