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

```python

import numpy as np

import tensorflow as tf

from tensorflow.keras.models import Model

from tensorflow.keras.layers import Input, Embedding, Flatten, Dot, Concatenate, Dense

# Пример создания модели для рекомендации фильмов на основе Embedding

# Параметры модели

num_users = 1000 # количество пользователей

num_movies = 2000 # количество фильмов

embedding_size = 50 # размерность векторного представления

# Входные данные для пользователей и фильмов

user_input = Input(shape=(1,))

movie_input = Input(shape=(1,))

# Embedding слои для пользователей и фильмов

user_embedding = Embedding(num_users, embedding_size)(user_input)

movie_embedding = Embedding(num_movies, embedding_size)(movie_input)

# Признаки пользователей и фильмов в одномерный вектор

user_vecs = Flatten()(user_embedding)

movie_vecs = Flatten()(movie_embedding)

# Добавление слоя скалярного произведения (Dot product) для оценки рейтинга

prod = Dot(axes=1)([user_vecs, movie_vecs])

# Полносвязный слой для финального рейтинга

dense = Dense(64, activation='relu')(prod)

output = Dense(1)(dense)

# Создание модели

model = Model(inputs=[user_input, movie_input], outputs=output)

# Компиляция модели

model.compile(optimizer='adam', loss='mean_squared_error')

# Вывод архитектуры модели

model.summary()

```

Пояснение архитектуры и процесса:

1. Embedding слои: Входные данные (идентификаторы пользователей и фильмов) преобразуются в вектора заданной размерности (`embedding_size`). Эти вектора представляют скрытые признаки пользователей и фильмов, которые модель использует для предсказания рейтингов.

2. Скалярное произведение (Dot product): После преобразования векторов пользователей и фильмов в одномерные формы, используется слой скалярного произведения для вычисления предсказанного рейтинга.

3. Полносвязный слой: Дополнительный полносвязный слой может быть использован для улучшения модели, добавляя нелинейность и улучшая обобщающую способность.

4. Компиляция и обучение модели: Модель компилируется с оптимизатором Adam и функцией потерь `mean_squared_error`, которая подходит для задачи регрессии (предсказания числового рейтинга).