一度に渡すデータの数を、 バッチサイズといい、 癖の強いデータが多い時はバッチサイズを大きくする、同じようなデータが多いときはバッチサイズを小さくするなどと、バッチサイズをうまく調整する必要があります。 バッチサイズを1とする手法を オンライン学習(確率的勾配降下法) バッチサイズを全データ数とする手法を バッチ学習(最急降下法) これらの中間となる手法を ミニバッチ学習と言います。 import numpy as np import matplotlib.pyplot as plt from keras.datasets import mnist from keras.layers import Activation, Dense, Dropout from keras.models import Sequential, load_model from keras import optimizers from keras.utils.np_utils import to_categorical (X_train, y_train), (X_test, y_test) = mnist.load_data() X_train = X_train.reshape(X_train.shape[0], 784)[:6000] X_test = X_test.reshape(X_test.shape[0], 784)[:1000] y_train = to_categorical(y_train)[:6000] y_test = to_categorical(y_test)[:1000] model = Sequential() model.add(Dense(256, input_dim=784)) model.add(Activation("sigmoid")) model.add(Dense(128)) model.add(Activation("sigmoid")) model.add(Dropout(rate=0.5)) model.add(Dense(10)) model.add(Activation("softmax")) sgd = optimizers.SGD(lr=0.1) model.compile(optimizer=sgd, loss="categorical_crossentropy", metrics=["accuracy"]) #バッチサイズ global batch_size batch_size = 64 model.fit(X_train, y_train, batch_size=batch_size, epochs=3, verbose=1) score = model.evaluate(X_test, y_test, verbose=0) print("evaluate loss: {0[0]}\nevaluate acc: {0[1]}".format(score))