Я пытаюсь создать модель рекомендации фильма, используя керасы:
import pandas as pd
from sklearn.model_selection import train_test_split
import keras
from keras.layers import Input, Embedding, Dot, Flatten
rating = pd.read_csv("./ratings.csv",usecols=[0,1,2])
users = len(rating.userId.unique())
movies = len(rating.movieId.unique())
embed_size = 3
train, test = train_test_split(rating, test_size=0.2)
movie_input = Input(shape=[1], name="movie_in")
movie_embed = Embedding(movies, embed_size, name="movie_embed")(movie_input)
movie_vector = Flatten(name="flatten_movies")(movie_embed)
user_input = Input(shape=[1], name="user_in")
user_embed = Embedding(users, embed_size, name="user_embed")(user_input)
user_vector = Flatten(name="flatten_users")(user_embed)
prod = Dot(axes=-1, name="dot-product")([movie_vector, user_vector])
model = keras.Model(inputs=[user_input, movie_input], outputs=prod)
model.compile(optimizer='adam', loss='mse')
model.fit(x=[train.userId, train.movieId], y=train.rating,epochs=10,
verbose=0)
Когда я пытаюсь обучить модель, я получаю следующую ошибку:
tensorflow.python.framework.errors_impl.InvalidArgumentError:
indices[15,0]= 7438 is not in [0, 5000)
[[{{node movie_embed/embedding_lookup}} = GatherV2[Taxis=DT_INT32,
Tindices=DT_INT32, Tparams=DT_FLOAT, _class=["loc:@training/Adam/Assign_2"],
_device="/job:localhost/replica:0/task:0/device:CPU:0"]
(movie_embed/embeddings/read, movie_embed/Cast,
training/Adam/gradients/movie_embed/embedding_lookup_grad/concat/axis)]]
Но большинствоонлайн-учебники используют один и тот же код, он работает для них правильно.