
[code]

    t = tf.constant([[1,-1,2,-3],[3,4,-3,2],[2,-1,-2,-3],[2,2,3,1]])
    
[/code]

があるとき、tの要素の中から値が正のものだけを選んで和を出したいのですがどうすればよろしいでしょうか。  
簡単に言うと下記のようなことをtensorflowでしたいです。

[code]

    sum = 0
    for i in len(t):
      for j in len(t[0]):
        if t[i][j]>0:
          sum += t[i][j]
    => sum == 22
    
[/code]

何卒よろしくお願いします。


CC BY-SA 3.0
2017-06-05T07:35:03.273
35299
2017-06-05T07:56:28.280
9610
question
python tensorflow
Tensorflowでテンソルの要素のうち0以上のものの和を計算したい

[code]

    condition = tf.greater(t,0)
    sum = tf.reduce_sum(tf.select(condition, t, tf.zeros_like(t)))
    
[/code]

でできることがわかりました。

tf.selectなら古いバージョンでも新しいバージョンでも動く気がします。  
比較的新しいバージョンを使っている方は以下でも可能っぽいです。

[code]

    sum = tf.reduce_sum(tf.where(condition, t, tf.zeros_like(t)))
    
[/code]

※私は0.8.0を使っているので、このようなwhereの使い方はできません。


CC BY-SA 3.0
2017-06-05T07:52:09.133
35300
2017-06-05T07:52:09.133
9610
35299
answer

[code]

    # 各要素に対してゼロ行列と比較して最大値をとれば負の数を除外できる
    z = tf.constant(0, shape=[4, 4], dtype=tf.int32)
    abs = tf.maximum(t, z)
    
    # 全要素の総和をとる
    result = tf.reduce_sum(abs)
    
[/code]


CC BY-SA 3.0
2017-06-05T07:56:28.280
35301
2017-06-05T07:56:28.280
3091
35299
answer