banner banner banner
120 практических задач
120 практических задач
Оценить:
Рейтинг: 0

Полная версия:

120 практических задач

скачать книгу бесплатно


gradients_of_generator = gen_tape.gradient(gen_loss, generator.trainable_variables)

gradients_of_discriminator = disc_tape.gradient(disc_loss, discriminator.trainable_variables)

generator_optimizer.apply_gradients(zip(gradients_of_generator, generator.trainable_variables))

discriminator_optimizer.apply_gradients(zip(gradients_of_discriminator, discriminator.trainable_variables))

def train(dataset, epochs):

for epoch in range(epochs):

for image_batch in dataset:

train_step(image_batch)

print(f'Эпоха {epoch + 1} завершена')

# Генерация изображений в конце каждой эпохи

if (epoch + 1) % 10 == 0:

noise = tf.random.normal([16, 100])

generate_and_save_images(generator, epoch + 1, noise)

# Шаг 6: Обучение GAN

EPOCHS = 100

train(train_dataset, EPOCHS)

# Шаг 7: Генерация изображений

def generate_and_save_images(model, epoch, test_input):

predictions = model(test_input, training=False)

fig = plt.figure(figsize=(4, 4))

for i in range(predictions.shape[0]):

plt.subplot(4, 4, i+1)

plt.imshow((predictions[i] * 127.5 + 127.5).numpy().astype(np.uint8))

plt.axis('off')

plt.savefig(f'image_at_epoch_{epoch:04d}.png')

plt.show()

# Генерация изображений после обучения

noise = tf.random.normal([16, 100])

generate_and_save_images(generator, EPOCHS, noise)

```

Пояснение:

1. Импорт библиотек: Импортируются необходимые библиотеки TensorFlow, Keras, numpy и matplotlib.

2. Подготовка данных: Загружаются и подготавливаются данные CelebA. Изображения нормализуются в диапазоне [-1, 1].

3. Построение генератора:

– Генератор создает изображения из случайного шума. Он включает плотные слои, batch normalization и Conv2DTranspose слои для генерации изображений размером 64x64 пикселей.

4. Построение дискриминатора:

– Дискриминатор оценивает, являются ли изображения реальными или сгенерированными. Он состоит из свёрточных слоев, слоев LeakyReLU и dropout для классификации изображений.

5. Построение и компиляция GAN:

– Генератор и дискриминатор объединяются в модель GAN. Определяются функции потерь и оптимизаторы для обеих моделей. Процедура `train_step` выполняет одну итерацию обучения GAN.

6. Обучение GAN:

– GAN обучается в течение заданного числа эпох. На каждом шаге обучения генератор пытается создать реалистичные изображения, а дискриминатор учится отличать реальные изображения от сгенерированных.

7. Генерация изображений:

– После обучения GAN, создаются и сохраняются изображения, сгенерированные генератором.

Этот пример демонстрирует, как создать сложную GAN для генерации реалистичных изображений лиц. Модель может быть улучшена за счет добавления дополнительных

9. Развертывание модели в продакшн

– Задача: Создание REST API для модели.

Развертывание модели машинного обучения в продакшн включает создание REST API, который позволяет клиентам взаимодействовать с моделью через HTTP запросы. В этом примере мы будем использовать Flask, популярный веб-фреймворк на Python, для создания REST API, который может обрабатывать запросы на предсказание с использованием обученной модели.

Шаги:

1. Импорт библиотек и загрузка модели.

2. Создание Flask приложения.

3. Определение маршрутов для API.

4. Запуск сервера.

Пример кода:

1. Импорт библиотек и загрузка модели

```python

import numpy as np

import tensorflow as tf

from flask import Flask, request, jsonify

# Загрузка обученной модели (предполагается, что модель сохранена в формате .h5)

model = tf.keras.models.load_model('path_to_your_model.h5')

```

2. Создание Flask приложения

```python

app = Flask(__name__)

```

3. Определение маршрутов для API

```python

@app.route('/predict', methods=['POST'])

def predict():

# Получение данных из POST запроса

data = request.get_json()

# Преобразование данных в формат, подходящий для модели

# Предположим, что данные представляют собой изображение в виде списка пикселей

image_data = np.array(data['image']).reshape((1, 28, 28, 1)) # Пример для модели, работающей с изображениями 28x28 пикселей

# Выполнение предсказания

prediction = model.predict(image_data)

# Возвращение результата в формате JSON

return jsonify({'prediction': prediction.tolist()})

# Маршрут для проверки работы сервера

@app.route('/')

def home():

return "API для предсказаний работает!"

```

4. Запуск сервера

```python

if __name__ == '__main__':

app.run(host='0.0.0.0', port=5000)

```

Полный пример кода:

```python

import numpy as np

import tensorflow as tf

from flask import Flask, request, jsonify

# Загрузка обученной модели

model = tf.keras.models.load_model('path_to_your_model.h5')

# Создание Flask приложения

app = Flask(__name__)

# Определение маршрута для предсказания

@app.route('/predict', methods=['POST'])

def predict():