Читать книгу 120 практических задач онлайн


Изменение количества нейронов


```python

# Скрытый слой с 256 нейронами

model = models.Sequential()

model.add(layers.Dense(256, activation='relu', input_shape=(28 * 28,)))

model.add(layers.Dense(10, activation='softmax'))

model.compile(optimizer='adam',

loss='sparse_categorical_crossentropy',

metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=5, batch_size=128)

test_loss, test_acc = model.evaluate(test_images, test_labels)

print(f"Точность на тестовых данных с 256 нейронами: {test_acc}")

```


Использование другой функции активации:


```python

# Скрытый слой с функцией активации 'tanh'

model = models.Sequential()

model.add(layers.Dense(512, activation='tanh', input_shape=(28 * 28,)))

model.add(layers.Dense(10, activation='softmax'))

model.compile(optimizer='adam',

loss='sparse_categorical_crossentropy',

metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=5, batch_size=128)

test_loss, test_acc = model.evaluate(test_images, test_labels)

print(f"Точность на тестовых данных с активацией tanh: {test_acc}")

```


Использование другого оптимизатора:


```python

# Оптимизатор 'SGD'

model = models.Sequential()

model.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))

model.add(layers.Dense(10, activation='softmax'))

model.compile(optimizer='sgd',

loss='sparse_categorical_crossentropy',

metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=5, batch_size=128)

test_loss, test_acc = model.evaluate(test_images, test_labels)

print(f"Точность на тестовых данных с оптимизатором SGD: {test_acc}")

```


Дополнительные методы предобработки данных и регуляризации

Регуляризация Dropout


```python

# Модель с Dropout

model = models.Sequential()

model.add(layers.Dense(512, activation='relu', input_shape=(28 * 28,)))

model.add(layers.Dropout(0.5))

model.add(layers.Dense(10, activation='softmax'))

model.compile(optimizer='adam',

loss='sparse_categorical_crossentropy',

metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=5, batch_size=128)