```
2. Использование другой функции активации:
```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}")
```
3. Использование другого оптимизатора:
```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}")
```
Дополнительные методы предобработки данных и регуляризации
1. Регуляризация 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)
test_loss, test_acc = model.evaluate(test_images, test_labels)
print(f"Точность на тестовых данных с Dropout: {test_acc}")
```
2. Стандартизация данных:
```python
from sklearn.preprocessing import StandardScaler
# Стандартизация данных
scaler = StandardScaler()
train_images_scaled = scaler.fit_transform(train_images)
test_images_scaled = scaler.transform(test_images)
model = models.Sequential()
model.add(layers.Dense(512, 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_scaled, train_labels, epochs=5, batch_size=128)
test_loss, test_acc = model.evaluate(test_images_scaled, test_labels)
print(f"Точность на тестовых данных со стандартизацией: {test_acc}")
```
Эти дополнительные шаги помогут вам лучше понять поведение модели и улучшить её производительность за счёт оптимизации различных параметров и методов предобработки данных.
2. Улучшение модели с использованием регуляризации и dropout
– Задача: Повышение точности классификации.
Регуляризация и Dropout – это мощные методы, которые помогают улучшить обобщающую способность модели и предотвращают переобучение. Регуляризация добавляет штраф за сложные модели, уменьшая значения весов, а Dropout отключает случайный набор нейронов в процессе обучения, что снижает зависимость между нейронами.
Регуляризация L2
Регуляризация L2 добавляет штраф за большие веса к функции потерь, что помогает предотвратить переобучение.
```python
import tensorflow as tf
from tensorflow.keras import layers, models, regularizers
import numpy as np
import СКАЧАТЬ