【问题标题】:tf.ones_like(tensor) with a specific index set to 0特定索引设置为 0 的 tf.ones_like(tensor)
【发布时间】:2017-08-28 20:33:18
【问题描述】:

我试图模仿 tf.ones_like(),其中“给定一个张量(张量),此操作返回一个与张量具有相同类型和形状的张量,所有元素都设置为 1。”除了我想指定某个列索引设置为0。例如,我希望第一列全部为0

如果给定tensor = [[1,2,3], [4,5,6]],那么如果我指定第一列,我想返回[[0,1,1], [0,1,1]]。有没有办法通过 tensorflow 操作来做到这一点?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    您可以将tf.assign 与强制转换一起使用来实现相同的效果。

    import tensorflow as tf
    
    tensor = tf.Variable([[1,2,3], [4,5,6]])
    
    tensor = tf.cast(tf.cast(tf.assign(tensor[:,0], tf.zeros_like(tensor[:,0])), tf.bool), tf.int32)
    
    sess = tf.InteractiveSession()
    tf.global_variables_initializer().run()
    print(sess.run(tensor))
    
    # Output
    #[[0 1 1]
    #[0 1 1]]
    

    【讨论】:

      【解决方案2】:

      恕我直言,来自Variable helper functions 只有assign 在这种情况下可以提供任何合理的帮助。如果您不选择让 numpy 退出,我可以建议以下代码:

      t = np.array([[1,2,3],[4,5,6]])
      v = tf.Variable(t)
      t = np.ones_like(t)
      t[:,0] = 0
      sess = tf.Session()
      print(sess.run(v.assign(t)))
      

      【讨论】:

        猜你喜欢
        • 2018-05-31
        • 1970-01-01
        • 1970-01-01
        • 2022-08-19
        • 2013-03-04
        • 1970-01-01
        • 1970-01-01
        • 2016-12-08
        • 1970-01-01
        相关资源
        最近更新 更多