2017-10-22 8 views
1

Tensorflowでは、私は形状[batch_size、3]のフロートテンソルTを持っています。たとえば、T[0] = [4, 4, 3]です。このテンソル変換を行い、グラデーションを保存するにはどうすればよいですか?

埋め込み辞書からエントリを生成するために、サイズ5のものに変えたいと思います。私はその後、私は埋め込み辞書を掛けすることができ、この形式にそれを得ることができた場合は、上記の場合には、それは

T[0] = [[0, 0, 0, 0, 1], [0, 0, 0, 0, 1], [0, 0, 0, 1, 0]].

ようになります。しかし、これはグラフの途中にあり、それを流れる勾配が必要です。 stop_gradient a la How Can I Define Only the Gradient for a Tensorflow Subgraph?を使用してこの作業を行う巧妙な方法はありますか?私は不足しています。

答えて

1

私は、次の方法でこれを解決することができた:

expanded = tf.expand_dims(inputs, 2) 
embedding_input = tf.cast(tf.one_hot(tf.to_int32(inputs), 5), inputs.dtype) 
embedding_input = tf.stop_gradient(embedding_input - expanded) + expanded 
関連する問題