【问题标题】:Tensorflow: How to zero a random element?Tensorflow:如何将随机元素归零?
【发布时间】:2016-10-26 06:40:35
【问题描述】:

在 Tensorflow 中,我想创建一个除单个元素外的所有掩码,其中元素位置是随机选择的。具体来说,我想创建一个 [0,1,1,1] 或 [1,1,0,1] 的随机掩码

我试过了:

import tensorflow as tf
import numpy as np

# randomly draw the column to select (either column 0 or 2)
COLselect = tf.to_int64(tf.greater(tf.random_uniform((1,)), 0.5))
column_num = COLselect*2

ones_mask = tf.Variable(numpy.ones((4,)))

我一直在纠结如何创建一个新的掩码,将 one_mask 的 column_num 列清空。

我尝试关注Manipulating matrix elements in tensorflow,但失败了,因为该列是张量。

谢谢

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    另一种选择是将tf.one_hot 与自定义on_valueoff_value 一起使用,并使用随机整数作为索引。您可以使用tf.reshape 来获得正确形状的输出。

    【讨论】:

      【解决方案2】:

      使用 TensorFlow r0.10:

      import tensorflow as tf
      import numpy as np
      
      # randomly draw the column to select (either column 0 or 2)
      COLselect = tf.to_int64(tf.greater(tf.random_uniform((1,)), 0.5))
      column_num = COLselect*2
      
      ones_mask = tf.Variable(np.ones((4,)))
      mask_op = tf.scatter_update(ones_mask,column_num,[0])
      
      sess = tf.Session()
      sess.run(tf.initialize_all_variables())
      sess.run(mask_op)
      

      给我:

      数组([ 0., 1., 1., 1.])

      数组([ 1., 1., 0., 1.])

      唯一的问题是 tf.scatter_update 修改了变量。这很正常,但是当你想再次调用 mask_op 时,你应该得到:

      数组([ 0., 1., 0., 1.])

      所以在每个mask_op 调用之前初始化ones_mask

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-05
        • 2022-01-18
        相关资源
        最近更新 更多