2024-04-24 06:55:29 发布
网友
在Tensorflow中,我尝试创建以下矩阵:
A = [[a, 0], [0,b]]
其中a和{}是我要解决的参数。在
a
以下是我目前所掌握的情况:
但是A的形状最终是(2,1,2),这是错误的(因为A0和B0都有形状(1,2))
在Tensorflow中有没有一种更简单的方法来创建矩阵对象A,或者有人知道为什么形状会和我正在做的事情相混淆?
tf.stack增加张量的秩(创建一个新轴),并将它们组合到新轴中。如果你想沿着一个现有的轴组合张量,你应该使用tf.concat。在
tf.stack
tf.concat
a = tf.Variable((1,), name="a", dtype = tf.float64) b = tf.Variable((1,), name="b", dtype = tf.float64) const = tf.constant(0,dtype = tf.float64, shape = (1,)) A0 = tf.stack([a, const], axis=1) A1 = tf.stack([const, b], axis=1) # more clear than tf.transpose A = tf.concat((A0, A1), axis=0)
A现在是形状(2,2)。在
为了解释,每个对象都是一个秩1张量,有一个元素:
堆叠可以:
tf.stack((A, const), axis=0) = [[1], [0]] # 2x1 matrix
串联可提供:
tf.concat((A, const), axis=0) = [1, 0] # 2 vector
你可以创建一个单变量向量params = tf.Variable((2,), name="ab"),然后与单位矩阵tf.eye(2)相乘:
params = tf.Variable((2,), name="ab")
tf.eye(2)
A = tf.matmul(tf.expand_dims(params,0), tf.eye(2))
tf.stack
增加张量的秩(创建一个新轴),并将它们组合到新轴中。如果你想沿着一个现有的轴组合张量,你应该使用tf.concat
。在A现在是形状(2,2)。在
为了解释,每个对象都是一个秩1张量,有一个元素:
^{pr2}$堆叠可以:
串联可提供:
你可以创建一个单变量向量
params = tf.Variable((2,), name="ab")
,然后与单位矩阵tf.eye(2)
相乘:相关问题 更多 >
编程相关推荐