初始化
我也是不想换版本,因为1.x迟早会像py2.x那样被淘汰。
2.0以上版本把代码改为:
optimizer = tf.compat.v1.train.AdamOptimizer(1e-4)
train = optimizer.minimize(loss)
# 需要将TensorFlow版本设置为1.x
%tensorflow_version 1.x
import tensorflow as tf
tf.__version__
summaryMerge=tf.compat.v1.summary.merge_all(); 用这个
https://docs.google.com/spreadsheets/d/1FLFJLzg7WNP6JHODX5q8BDgptKafq_slHpnHVbJIteQ/edit#gid=0
遇到问题用上面的网址一个个对照过来——百度了三个小时才解决呜呜呜
同问同问
更新到最新版本的 Microsoft Visual C++
网速慢?那就用热点呀
版本问题
在2.x 版本中应为 tf.random.normal
# 我改成了这样可以运行 for i in range(m): #获取一部电影评分用户的id ids = np.nonzero(record[i])[0] #ids = record[i,:] != 0 rating_mean[i] = np.mean(rating[i,ids]) #rating_norm[i,ids] -= rating_mean[i] rating_norm[i,ids] = rating[i,ids] - rating_mean[i] print("The row is {},mean rating is {},rating user size is {}" .format(i,rating_mean[i],ids.shape))
我把整个过程迭代了10000次 num_feature设置为100 最后errors确实随着迭代次数减少 但是每次对同一个用户的推荐结果还是完全不一样?
不太懂,前面说内容矩阵X和用户喜好矩阵Theta相乘就是完整的评分表了,我猜测这里加平均分可能是为了让数据好看一点,因为电影类型num_features他直接默认设置的10,当实际的类型远大于10的时候,计算出来的评分值会偏小,我试过,可能只有0.几的评分。所以当找到一个合适的num_features之后不加平均分,出来的值就是正常的,加上平均分反而超过评分的最高值了。他前面评分最高就5分,结果出来5.好几,这不是扯呢么
原始条件只需要用户评分表这一张表就好了。用户喜好矩阵和电影内容矩阵都是要求解的对象。
解决了,直接用excle修改.csv 文件,用其中rank函数进行对应排序
recall= 用户所需/用户购买总个数
user_id = input('请输入') # print(int(user_id)) print(int(float(user_id)))
movies_mean = np.sum(rating, axis=1) / np.sum(rating!=0, axis=1)
rating -= movies_mean.reshape(-1, 1)