В модель из предыдущего урока добавьте MaxPooling размером 2x2 после свёрточных слоёв. Вызовите функцию summary(), чтобы посмотреть на изменение количества параметров сети.
Убедитесь, что код рабочий. Для этого запустите обучение на одном объекте (уже в прекоде).
Подсказка
Допишите код создания модели:
model = Sequential()
model.add(Conv2D(filters=4, kernel_size=(3, 3), padding='same',
activation="relu", input_shape=(28, 28, 1)))
model.add(Conv2D(filters=4, kernel_size=(3, 3), strides=2, padding='same',
activation="relu"))
model.add(MaxPooling2D(# < напишите код здесь >))
model.add(Flatten())
model.add(Dense(units=10, activation='softmax'))
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Conv2D, Flatten, Dense, MaxPooling2D
import matplotlib.pyplot as plt
import numpy as np
features_train = np.load('/datasets/fashion_mnist/train_features.npy')
target_train = np.load('/datasets/fashion_mnist/train_target.npy')
features_test = np.load('/datasets/fashion_mnist/test_features.npy')
target_test = np.load('/datasets/fashion_mnist/test_target.npy')
features_train = features_train.reshape(-1, 28, 28, 1) / 255.0
features_test = features_test.reshape(-1, 28, 28, 1) / 255.0
model = Sequential()
model.add(Conv2D(filters=4, kernel_size=(3, 3), padding='same',
activation="relu", input_shape=(28, 28, 1)))
model.add(Conv2D(filters=4, kernel_size=(3, 3), strides=2, padding='same',
activation="relu"))
model.add(MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid'))
model.add(Flatten())
model.add(Dense(units=10, activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy', optimizer='sgd', metrics=['acc'])
model.summary()
model.fit(features_train, target_train, epochs=1, verbose=1,
steps_per_epoch=1, batch_size=1)