Да, может, странно, что его нет в do c, но он работает точно так же, как аргумент x
, вы также можете использовать keras.Sequence
или generator
. В моем проекте я часто использую keras.Sequence
, который действует как генератор
Минимальный рабочий пример, который показывает, что он работает:
import numpy as np
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Flatten
def generator(batch_size): # Create empty arrays to contain batch of features and labels
batch_features = np.zeros((batch_size, 1000))
batch_labels = np.zeros((batch_size,1))
while True:
for i in range(batch_size):
yield batch_features, batch_labels
model = Sequential()
model.add(Dense(125, input_shape=(1000,), activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
train_generator = generator(64)
validation_generator = generator(64)
model.fit(train_generator, validation_data=validation_generator, validation_steps=100, epochs=100, steps_per_epoch=100)
100/100 [===== [===== =========================] - 1 с 13 мс / шаг - потеря: 0,6689 - точность: 1,0000 - val_loss: 0,6448 - val_accuracy: 1,0000 Epoch 2 / 100 100/100 [==============================] - 0 с 4 мс / шаг - потеря: 0,6223 - точность: 1,0000 - val_loss: 0.6000 - val_accuracy: 1.0000 Epoch 3/100 100/100 [====================================] - 0s 4ms / шаг - потеря: 0.5792 - точность: 1.0000 - val_loss: 0.5586 - val_accuracy: 1.0000 Epoch 4/100 100/100 [================================ =====] - 0 с 4 мс / шаг - потеря: 0,5393 - точность: 1,0000 - val_loss: 0,5203 - val_accuracy: 1,0000