from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from tensorflow.keras.datasets import mnist from tensorflow.keras.utils import to_categorical def mnist_generator(batch_size=32): (x_train, y_train), (x_test, y_test) = mnist.load_data() while True: for i in range(0, len(x_train), batch_size): x_batch = x_train[i:i+batch_size]/255.0 y_batch = to_categorical(y_train[i:i+batch_size], num_classes=10) yield x_batch, y_batch model = Sequential() model.add(Dense(128, activation='relu', input_shape=(784,))) model.add(Dense(10, activation='softmax')) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) model.fit_generator(mnist_generator(), steps_per_epoch=2000, epochs=10, validation_data=(x_test/255.0, to_categorical(y_test)))
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense from tensorflow.keras.preprocessing.image import ImageDataGenerator def custom_generator(base_dir, batch_size=32): data_gen = ImageDataGenerator(rescale=1./255) generator = data_gen.flow_from_directory(base_dir, target_size=(150,150), batch_size=batch_size, class_mode='binary') while True: x_batch, y_batch = generator.next() yield x_batch, y_batch model = Sequential() model.add(Conv2D(32, (3,3), activation='relu', input_shape=(150,150,3))) model.add(MaxPooling2D(2,2)) model.add(Conv2D(64, (3,3), activation='relu')) model.add(MaxPooling2D(2,2)) model.add(Conv2D(128, (3,3), activation='relu')) model.add(MaxPooling2D(2,2)) model.add(Conv2D(128, (3,3), activation='relu')) model.add(MaxPooling2D(2,2)) model.add(Flatten()) model.add(Dense(512, activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.fit_generator(custom_generator('cats_vs_dogs/train'), steps_per_epoch=100, epochs=10, validation_data=custom_generator('cats_vs_dogs/validation'), validation_steps=50)In both examples, `fit_generator` is called with a generator function that yields batches of input data and target data. The `steps_per_epoch` parameter specifies how many batches to use for each epoch of training. For the second example, the `validation_data` and `validation_steps` parameters are also specified to evaluate the model on a separate validation set. This code is using the `tensorflow.keras` package library.