将切片分配给张量流变量



我正在尝试为tensorflow中的变量切片赋值,但显示以下错误:"值错误:切片赋值仅支持变量"。为什么即使我尝试对变量进行切片分配,也会显示此错误。我的代码是这样的:

var1 = var1[startx:endx,starty:endy].assign(tf.ones([endx-startx,endy-starty],dtype=tf.int32))

其中var1是一个张量流变量。

另一个答案是正确的;对 tf 变量执行任何操作都不会(总是(返回 tf 变量。因此,如果要链接分配,请使用显式控件依赖项:

v = tf.Variable(...)
with tf.control_dependencies([v[...].assign(...)]):
return v[...].assign(...)

一旦var1被切片,它就不再是变量。

numpy 样式切片符号 (tensor[a:b]( 只是较长的张量流符号的简写tf.slice(tensor, a, a+b),它在图上输出一个新的张量操作(见 https://www.tensorflow.org/api_docs/python/tf/slice(。

您尝试制作的图形看起来像(括号中表示张量输出类型(:

Var1(tf.可变( ->tf.slice(tf.张量(张量->tf.assign(tf.变量(。

由于分配仅适用于tf.Variable对象,因此它不能处理切片操作的输出。

最新更新