我正在尝试为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
对象,因此它不能处理切片操作的输出。