2
ケラスでニューラルネットワークをトレーニングしており、batch_size
パラメータが正しく解釈されていないようです。ケラスはbatch_inputパラメータを考慮していません
下記のコードを参照してください(アプリケーションは愚かです、私が気にするのは出力です)。
import numpy as np
from keras.models import Sequential
from keras.layers import Activation, Dense, Reshape
import keras
class LossHistory(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.losses = []
def on_batch_end(self, batch, logs={}):
self.losses.append(logs.get('loss'))
history = LossHistory()
X = np.random.normal(0, 1, (1000, 2))
Y = np.random.normal(0, 1, (1000, 3))
model = Sequential()
model.add(Dense(20, input_shape = (2,), name='input layer dude'))
model.add(Activation('relu'))
model.add(Dense(12))
model.add(Activation('relu'))
model.add(Dense(8))
model.add(Activation('linear'))
model.add(Dense(3))
model.add(Activation('linear'))
model.add(Reshape(target_shape=(3,), name='output layer dude'))
model.compile(optimizer='adam', loss='mse',)
私は経由してこのモデルを呼び出すとき:
model.fit(X, Y, batch_size=10, nb_epoch=10, callbacks=[history])
出力は、(総サンプル数である)バッチ当たり10の項目をやってではなく、1000年されていないことを示唆しているようです。
Epoch 1/10
1000/1000 [==============================] - 0s - loss: 898.6197
Epoch 2/10
1000/1000 [==============================] - 0s - loss: 31.5123
Epoch 3/10
1000/1000 [==============================] - 0s - loss: 16.7140
Epoch 4/10
1000/1000 [==============================] - 0s - loss: 11.4034
Epoch 5/10
1000/1000 [==============================] - 0s - loss: 8.9275
Epoch 6/10
1000/1000 [==============================] - 0s - loss: 7.4699
Epoch 7/10
1000/1000 [==============================] - 0s - loss: 6.5648
Epoch 8/10
1000/1000 [==============================] - 0s - loss: 5.9576
Epoch 9/10
1000/1000 [==============================] - 0s - loss: 5.5064
Epoch 10/10
1000/1000 [==============================] - 0s - loss: 5.1514
何か問題が起こっていますか?