我使用tensorflow来使用协同过滤算法构建推荐系统。
由于内存使用,我必须使用稀疏矩阵。
#Arbitrary number of items are rated by arbitrary number of users
ratings = tf.sparse_placeholder(tf.float32, shape=[None, None])
ratings = tf.sparse_reorder(ratings)
使用我的feed_dict,
ratings.dense_shape == (45776, 60184)
pred = tf.matmul(items_features, user_preferences, name='Prediction') + global_mean
我已经硬编码pred.shape == (45776, 60184)
那么当我尝试收集预测以便以后计算成本时会怎样呢
pred_values = tf.gather_nd(pred, ratings.indices)
我收到错误
InvalidArgumentError(参见上面的回溯):flat indices [2714679,:] = [48375,2227]不会索引到param(形状:[45776,60184])。
?
答案 0 :(得分:0)
事实证明我确实搞乱了尺寸。我按照与我想的相反的顺序输入索引,即形状(60184,45776)
而不是需要(45776,60184)
。
错误地告诉我的flat indices[2714679, :]
正在编制索引[48375, 2227]
- 没有出现的形状 - 没有帮助。