matrix - 在 tensorflow 中操纵矩阵元素

标签 matrix indexing element variable-assignment tensorflow

我如何在 tensorflow 中执行以下操作?

mat = [4,2,6,2,3] #
mat[2] = 0 # simple zero the 3rd element

我不能使用[]括号,因为它仅适用于常量而不适用于
变量。我不能使用slice函数,因为这会返回张量,并且您无法分配给张量。
import tensorflow as tf
sess = tf.Session()
var1 = tf.Variable(initial_value=[2, 5, -4, 0])
assignZerosOP = (var1[2] = 0) # < ------ This is what I want to do

sess.run(tf.initialize_all_variables())

print sess.run(var1)
sess.run(assignZerosOP)
print sess.run(var1)

会列印
[2, 5, -4, 0] 
[2, 5, 0, 0])

最佳答案

您无法更改张量-但正如您指出的,您可以更改变量。

您可以使用三种模式来完成所需的工作:

(a)使用 tf.scatter_update 直接戳到要更改的变量部分。

import tensorflow as tf

a = tf.Variable(initial_value=[2, 5, -4, 0])
b = tf.scatter_update(a, [1], [9])
init = tf.initialize_all_variables()

with tf.Session() as s:
  s.run(init)
  print s.run(a)
  print s.run(b)
  print s.run(a)

[ 2 5 -4 0]

[ 2 9 -4 0]

[ 2 9 -4 0]



(b)创建张量的两个tf.slice(),不包括您要更改的项目,然后一起对它们进行tf.concat(0, [a, 0, b])

(c)创建b = tf.zeros_like(a),然后使用tf.select()选择所需的a中的哪些项以及所需的b中的零。

我之所以包含(b)和(c)是因为它们与正常张量一起工作,而不仅仅是变量。

关于matrix - 在 tensorflow 中操纵矩阵元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35769944/

相关文章:

OpenCV 向量到 Mat 但不是 element->row

javascript - 为什么 jQuery next 找不到下一个 div?

javascript - 从正文中获取所有文本并根据标签进行拆分

html - CSS 规则中第 n 个 child 的索引?

web - 如何从D3.js力图中的元素位置获取Web元素(id)

c++ - 使用 Eigen 映射复杂矩阵

algorithm - 如果要加密的字母数发生变化,Hill Cipher key 是否会有所不同?

matrix - Jenkins - 按顺序执行相同的模型,而不是并行执行

java - Neo4j 索引未找到节点

mysql - 在 MySQL 中删除表是否也会删除索引?