Джейд Картер "120 практических задач"

None

date_range Год издания :

foundation Издательство :Автор

person Автор :

workspaces ISBN :

child_care Возрастное ограничение : 999

update Дата обновления : 03.07.2024

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 matplotlib.pyplot as plt

# Загрузка и предобработка данных

(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()

train_images = train_images / 255.0

test_images = test_images / 255.0

train_images = train_images.reshape((60000, 28 * 28))

test_images = test_images.reshape((10000, 28 * 28))

# Модель с регуляризацией L2

model = models.Sequential()

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

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"Точность на тестовых данных с регуляризацией L2: {test_acc}")

```

Dropout

Dropout случайным образом отключает нейроны в процессе обучения, что снижает вероятность переобучения.

```python

# Модель с Dropout

model = models.Sequential()

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

model.add(layers.Dropout(0.5)) # 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}")

Похожие книги


Все книги на сайте предоставены для ознакомления и защищены авторским правом