Модель Google Colab Tensorflow не использует все образцы в эпоху - PullRequest
0 голосов
/ 02 апреля 2020

Мои тренировочные данные имеют 10680 выборок, и я установил подгонку следующим образом:

model.fit(X, y, batch_size=32, epochs=5, verbose=1, validation_split=0.1)

Это означает, что он должен использовать 90% для обучения (9612 выборок) и остальные 10% для проверки, верно ?

Но когда я пытаюсь запустить его, показываются следующие эпохи:

Epoch 1/5
301/301 [==============================] - 25s 85ms/step - loss: nan - accuracy: 0.4999 - val_loss: nan - val_accuracy: 0

Используется только 301 образец для подбора.

Что я делаю неправильно или не вижу здесь?

Я знаю, что это неправильно, потому что он работал один раз (с 9612 сэмплами).

Это модель:

keras.utils.normalize(X)

model = Sequential()

model.add(Conv2D(128, (3,3), input_shape = X.shape[1:]))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(128, (3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Flatten()) # Converts 3D feature maps to 1D feature vectors

model.add(Dense(128, kernel_regularizer= tf.keras.regularizers.l2(5e-5)))
model.add(Activation("relu"))

model.add(Dense(1, kernel_regularizer=tf.keras.regularizers.l2(5e-5)))
model.add(Activation("sigmoid"))

sgd = tf.keras.optimizers.SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True)

model.compile(loss="binary_crossentropy",
              optimizer=sgd,
              metrics=['accuracy'])

model.summary()

1 Ответ

1 голос
/ 02 апреля 2020

Я думаю, что 301 там означает количество пакетов, поэтому, поскольку у вас есть 9612 данных и установлено значение batch_size=32, количество пакетов должно составлять 9612 / 32 = 300.375 -> 301

...