Keras神经网络只需要少量样本进行训练


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个随机样本来训练我的网络,但它只使用了其中的几个(250/10000(第一纪元的例子:

Epoch 1/30

250/250[=========================]-0s 2ms/步-损耗:2.1110-精度:0.2389-val_loss:2.2142-val_accurcy:0.1800

您的数据被划分为训练和验证子集(validation_split=0.2(。培训子集的规模为8000,验证为2000。训练是分批进行的,默认情况下每个批次有32个样本。因此,一个历元应该需要8000/32=250个批次,正如它在进度中所显示的那样。

尝试类似以下示例的代码

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)

最新更新