2017-12-09 8 views
1

私はMNISTと一緒に作業しており、サイズ[?、28,28,1]のテンソルグラジエントを持っています。その中の[28,28,1]サブテンソルのいくつかをゼロにしたい私はこれを達成すべきでしょうか?テンソルでテンソル内のサブテンソルを更新するにはどうすればよいですか?

私はサブテンソルをゼロにする必要があるインデックスを(リストとして)知っています。私はこのようなことをやってみた(下記)が、scatter.updateはテンソルではない変数しか変更できない。私もゼロと1の必要なサブテンソルを積み重ねようとしましたが、必要な結果が得られませんでした。

dy_dx, = tf.gradients(loss, x_adv) zeroes = tf.zeros(dy_dx[0].get_shape(), tf.float32) dy_dx = tf.scatter_update(dy_dx, indices, zeroes)

ありがとう!

答えて

1

ゼロにしたい場所とそれ以外の場所に0をつけたTensorFlow定数を作成することをお勧めします。次に、tf.multiplyを使用して定数の要素ごとの乗算を行うopを作成し、dy_dxとすることができます。グラフの構造によっては、session.runへの次の呼び出しで結果をdy_dxに送る必要があります。 Tensorを変数や定数を含むフィードデータに置き換えることができます。

ちなみに、入力層にドロップアウトを適用したい場合は、tf.layers.dropout

+0

はい!マスクを作成することで正しい?しかし、tfのインデックスの配列からマスクを作成するコードを記述してください。 –

+0

マスクをPythonリストとして作成し、パラメータとして 'tf.constant'に渡すことができます。 – Stephen

関連する問題