当我调用一个采用输入张量的形状并从该形状创建变量的函数时,就会遇到某种无限循环。
这是代码段,下面是打印输出。
def g(z_lat, u):
print(u)
shape = tf.shape(u)[1:] #Don't take the batch size as a dimension
print(shape)
wi = lambda inits, name: tf.Variable(inits * tf.ones(shape), name=name)
a1 = wi(0., 'a1')
return a1
输出:
Tensor("truediv:0", shape=(?, 9), dtype=float32)
Tensor("strided_slice:0", shape=(1,), dtype=int32)
我以某种方式感到解决方案很明显,但我看不到它。感谢您的帮助。
编辑:当第一维未知时(而不是(?,9)例如(200,9)),它可以工作
这是我执行键盘中断时的输出。重复一遍:
usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/variables.py in has_cycle(op, path)
2165 path.add(op.name)
2166 for op_input in op.inputs:
-> 2167 if has_cycle(op_input.op, path):
2168 return True
2169 for op_control_input in op.control_inputs:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/variables.py in has_cycle(op, path)
2165 path.add(op.name)
2166 for op_input in op.inputs:
-> 2167 if has_cycle(op_input.op, path):
2168 return True
2169 for op_control_input in op.control_inputs: