Cfi*_*Yoi 14 python matrix tensorflow
我在张量流中遵循这个操纵矩阵元素.使用tf.scatter_update.但我的问题是:如果我的tf.Variable是2D,会发生什么?让我们说:
a = tf.Variable(initial_value=[[0, 0, 0, 0],[0, 0, 0, 0]])
Run Code Online (Sandbox Code Playgroud)
我如何更新例如每行的第一个元素并将其赋值为1?
我试过类似的东西
for line in range(2):
sess.run(tf.scatter_update(a[line],[0],[1]))
Run Code Online (Sandbox Code Playgroud)
但它失败了(我在期待)并给我错误:
TypeError:'ScatterUpdate'的输入'ref'需要输入l值
我该如何解决这类问题?
`
fab*_*ioM 13
在tensorflow中,您无法更新Tensor,但可以更新变量.
该scatter_update
操作只能更新变量的第一个维度.您必须始终将参考张量传递给散点图更新(a
而不是a[line]
).
这是你如何更新变量的第一个元素:
import tensorflow as tf
g = tf.Graph()
with g.as_default():
a = tf.Variable(initial_value=[[0, 0, 0, 0],[0, 0, 0, 0]])
b = tf.scatter_update(a, [0, 1], [[1, 0, 0, 0], [1, 0, 0, 0]])
with tf.Session(graph=g) as sess:
sess.run(tf.initialize_all_variables())
print sess.run(a)
print sess.run(b)
Run Code Online (Sandbox Code Playgroud)
输出:
[[0 0 0 0]
[0 0 0 0]]
[[1 0 0 0]
[1 0 0 0]]
Run Code Online (Sandbox Code Playgroud)
但是不得不再次改变整个张量,分配一个全新的张量可能会更快.
归档时间: |
|
查看次数: |
7116 次 |
最近记录: |