2016-08-18 5 views
1

compute_gradientsのうちの1つがタイプIndexedSlicesであり、その他がタイプtensorであるRNNのモデルをテンソルフローで定義しました。tensorflow複数のIndexedSlicesValueを平均する方法は?

  1. は、どのように私はいくつかのIndexedSlicesValue値を平均可能性:I session.run(compute_gradients ...)後、IndexedSlicesの戻り値の型は、その後、私は2つの質問があり、IndexedSlicesValueのですか?
  2. IndexedSlicesValueをシリアル化してソケット経由で別のマシンに送信するにはどうすればよいですか?

ありがとうございました!

答えて

1

IndexedSlicesは、実際には密なテンソルのエンコーディングで、密なテンソルのペアを使用しています。おそらく、tf.gather操作のグラディエントから来ています。ここにIndexedSlicesに関するAPIドキュメントがあります。https://www.tensorflow.org/api_docs/python/tf/IndexedSlices

IndexedSlicesを直接操作するコードはあまりありません。典型的には、グラデーションコードの一部として使用される内部の詳細です。データのサイズにもよりますが、それらを扱う最も簡単な方法は、密度の高いTensorに変換して処理/送信することです。

+0

ありがとうございます。しかし、それを高密度テンソルに変換する方法は?テンソルフローでAPIが見つかりませんでした。 –

+0

これは少し面倒ですが、私が見ることのできる最良の方法は 'tf.scatter_add'を使ってIndexedSlicesの更新を変数に適用することです。私はあなたのためにより良い答えを見つけることができるかどうかがわかります。 –

+0

'tf.convert_to_tensor'はそれを密なテンソルに変換します。しかし、 'IndexedSlices'構造を保持したまま、インデックスと値を連結するほうが効率的かもしれません。なぜなら、密なテンソルは' IndexedSlices'結合よりずっと大きいかもしれないからです。 –

関連する問題