在我想用Tensorflow解决的问题中,我想构建一个由块“对角线”的n-dimensional
等级张量。也就是说,我想从低阶张量的连接中生成张量对象。
我试图定义整个tf.Variable
张量,然后将值0
强加给某些变量,但Tensorflow在使用变量张量时不允许赋值。
此外,我想创建具有相同自变量的“对角线”张量,例如,使用堆叠的2D表示,即A 2维张量:
T = [A, 0;0 , A]
我目前的源代码:
shape1 = [3,3,10,10]
shape2 = [3,3]
i1 = tf.truncated_normal(shape1, stddev=1.0, dtype = tf.float32)
i2 = tf.truncated_normal(shape2, stddev=1.0, dtype = tf.float32)
A = tf.Variable(i1)
V = tf.Variable(i2)
for i in range(10):
for j in range(10):
if i != j:
A[:,:,i,j] = tf.zeros((3,3))
else:
A[:,:,i,j] = V
当然,此代码返回错误Variable object does not support item assignment
。
在一天结束时,我想要的是定义一个变量张量,例如:
T[:,:,i,j] = tf.zeros([D0,D1]), if i != j
和
T[:,:,i,j] = A, if i = j
with A = tf.variable([D0,D1])
非常感谢你提前!
一种方法是使用tf.stack,它将维数为n的张量列表转换为维数为n + 1的张量。
l = []
for i in range(10):
li = [V * 0.0 if i != j else V for j in range(10)]
Ai = tf.stack(li)
l.append(Ai)
A = tf.stack(l)