2017-11-21 16 views
0

私はテンソルフローを使用して、共同フィルタリングアルゴリズムを使用して推奨システムを構築しています。Tensorflow InvalidArgumentError(トレースバックについては上記を参照):フラットインデックスはパラメータにインデックスを付けません

メモリ使用量のため、私は疎行列を使用する必要があります。私feed_dictで

#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) 

ratings.dense_shape == (45776, 60184)

pred = tf.matmul(items_features, user_preferences, name='Prediction') + global_mean 

私は後でコストに

pred_values = tf.gather_nd(pred, ratings.indices) 

を計算する予測を収集しようとすると、どのように来るのでpred.shape == (45776, 60184)

をハードコードされています私はエラー
012を得るInvalidArgumentError(トレースバックについては上記を参照):フラットインデックス[2714679、:] = [48375、2227]は、パラメータにインデックスを付けません(形状:[45776,60184])。

+0

あなたのコードを見ずに答えるのは難しいです。特に、「結果」の宣言と形を知ることは助けになります。 – MatthewScarpino

+0

申し訳ありません、編集されました。私のコードでは "result"は "pred"でした – julka

+0

'ratings'テンソルの値は' pred'テンソル(45776)よりも多くの行(48375)を持っているようです。だから ''レーティング 'のインデックスを使って' pred'の値にアクセスすることはできません。 – MatthewScarpino

答えて

0

私はディメンションを台無しにしたことが判明しました。私は思ったより反対の順序で、すなわち(45776,60184)の代わりに形(60184,45776)のためにインデックスを供給した。

私のflat indices[2714679, :]が表示されていないというエラーが発生した場合は、表示されない形の[48375, 2227]が索引付けされています。

関連する問題