#代码摘自唐宇迪《推荐系统》视频课程,数据集来自http://pan.baidu.com/s/1eS5VZ8Y中的“ml-1m"数据
from collections import deque
from six import next
import readers
import tensorflow as tf
import numpy as np
import time
np.random.seed(42)
u_num = 6040
i_num = 3952
batch_size = 1000
dims = 5
max_epochs = 50
place_device = "/cpu:0"
def get_data()
df = readers.read_file("./ml-1m/ratings.dat",sep = "::")
rows = len(df)
df = df.iloc[np.random.permutation(rows)].reset_index(drop = True)
split_index = int(rows*0.9)
df_train = df[0:split_index]
df_test = df[split_index:].reset_index(drop = True)
return df_train,df_test
def clip(x):
return np.clip(x, 1.0, 5.0)
def model(user_batch, item_batch, user_num, item_num, dim=5, device = "cpu:0"):
with tf.device("/cpu:0"):
with tf.variable_scope('lsi',reuse = True):
bias_global = tf.get_variable("bias_global",shape=[])
w_bias_user = tf.get_variable("embd_bias_user",shape=[user_num