

機械学習によく出てくるbatch_sizeとはバッチとはなんですか？

[code]

    y_vals = np.transpose([np.array([y[13] for y in housing_data])])
    x_vals = np.array([[x for i,x in enumerate(y)
                    if housing_header[i] in cols_used] for y in housing_data])
    
    #min-maxスケーリングを使って、x値を０〜１の値にスケーリング
    x_vals = (x_vals - x_vals.min(0)) / x_vals.ptp(0)
    
    np.random.seed(13)
    train_indices = np.random.choice(len(x_vals), round(len(x_vals)*0.8),   replace=False)
    test_indices = np.array(list(set(range(len(x_vals))) - s et(train_indices)))
    x_vals_train = x_vals[train_indices]
    x_vals_test = x_vals[test_indices]
    y_vals_train = y_vals[train_indices]
    y_vals_test = y_vals[test_indices]
    
    k = 4
    batch_size=len(x_vals_test)
    
[/code]

参照：TensoFlow機械学習クックブック


CC BY-SA 3.0
2017-08-24T22:07:01.970
37472
2017-12-27T23:52:51.713
2017-08-25T03:40:49.333
19110
23690
question
tensorflow 機械学習
機械学習によく出てくるbatch_sizeとはバッチとはなんですか？


バッチ(Batch)は、計算機処理の用語です。

計算機で処理をするやり方は、大きく分けて次の２種類になります。  
a) データを揃えておいて一気にプログラム処理をする  
b) オペレータがプログラムからの出力に応じて、データなどを入力しながら処理をすすめる

バッチ（バッチ処理）はa)のやり方です。 b)のほうはインタラクティブ処理とかリアルタイム処理とか呼ばれます。

Windows等で一連のコマンドを実行するためのファイルの拡張子は".bat"ですが、Batchに由来します。

＝＝  
質問のコードに出てくる batchは、複数のデータに対して同じ処理を一気に行う事を意味すると推測されます。

[code]

    batch_size=len(x_vals_test)
    
[/code]

は、テスト用データを使って学習結果を判断する処理をするための準備として、処理するデータの数を求めているのでしょう。  
テスト用のデータ(x_vals_testとy_vals_test)は、もう少し上のコードで準備されています。


CC BY-SA 3.0
2017-08-25T00:34:02.190
37474
2017-08-25T00:34:02.190
217
37472
answer


ここでいうバッチは、処理されるデータの「ひとまとまり」を指してます。バッチサイズ=データサイズ、です。コンピュータ用語での「バッチ」は処理のほうを指すのが一般的で、処理される方を指して言うのはあまり一般的な用法では無いと思います。

バッチは一般的な用語で、計算機分野以外でも使われます。「JCO臨界事故」(俗に「バケツでウラン」事故)でも、バケツ一杯分の原料やそれを処理することを1バッチ、と表現してました。そもそも辞書を見ると「パンや陶器など一焼き分、一窯分」なんて書いてあります。


CC BY-SA 3.0
2017-08-25T08:33:45.453
37485
2017-08-25T08:33:45.453
5793
37472
answer


機械学習では、学習を早く、うまく進めるための一つの方法として、「バッチ」という考え方が導入されています。これは、すべてのデータを利用して学習を進めるのではなく、データの一部を利用することで計算量を減らそうという考え方です。

そして、学習を進める際に利用するデータの一部（ひとまとめのデータ）を抽象的に「バッチ」と呼び、このときに利用するデータの数を「バッチサイズ」と呼びます。

batch_size=len(x_vals_test)

は、（なぜだかはわかりませんが）テストデータのサイズを、バッチサイズとして扱うということでしょう。


CC BY-SA 3.0
2017-12-27T23:52:51.713
40569
2017-12-27T23:52:51.713
26813
37472
answer