Нейронная сеть Keras берет всего несколько образцов для обучения - PullRequest
0 голосов
/ 05 мая 2020
data = np.random.random((10000, 150)) 
labels = np.random.randint(10, size=(10000, 1))
labels = to_categorical(labels, num_classes=10) 
model = Sequential()
model.add(Dense(units=32, activation='relu', input_shape=(150,)))
model.add(Dense(units=10, activation='softmax'))
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

model.fit(data, labels, epochs=30, validation_split=0.2)

Я создал 10000 случайных выборок для обучения своего net, но он использует только несколько из них (250/10000) Пример 1-й эпохи:

Эпоха 1 / 30

250/250 [==============================] - 0 с 2 мс / шаг - потеря: 2.1110 - точность: 0,2389 - val_loss: 2,2142 - val_accuracy: 0,1800

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Ваши данные разделены на подмножества для обучения и проверки (validation_split = 0.2). Обучающее подмножество имеет размер 8000, а проверка - 2000. Обучение проходит партиями, каждая партия по умолчанию имеет размер 32 образца. Таким образом, одна эпоха должна занимать 8000/32 = 250 пакетов, как показано в процессе.

0 голосов
/ 05 мая 2020

Попробуйте код, как в следующем примере

model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

# Generate dummy data
import numpy as np
data = np.random.random((1000, 100))
labels = np.random.randint(10, size=(1000, 1))

# Convert labels to categorical one-hot encoding
one_hot_labels = keras.utils.to_categorical(labels, num_classes=10)

# Train the model, iterating on the data in batches of 32 samples
model.fit(data, one_hot_labels, epochs=10, batch_size=32)
...