张量流:创建一个以变量为元素的矩阵

2024-04-24 06:55:29 发布

您现在位置:Python中文网/ 问答频道 /正文

在Tensorflow中,我尝试创建以下矩阵:

A = [[a, 0], [0,b]]

其中a和{}是我要解决的参数。在

以下是我目前所掌握的情况:

^{pr2}$

但是A的形状最终是(2,1,2),这是错误的(因为A0和B0都有形状(1,2))

在Tensorflow中有没有一种更简单的方法来创建矩阵对象A,或者有人知道为什么形状会和我正在做的事情相混淆?


Tags: 对象方法参数tensorflow错误情况矩阵b0
2条回答

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张量,有一个元素:

^{pr2}$

堆叠可以:

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)相乘:

A = tf.matmul(tf.expand_dims(params,0), tf.eye(2))

相关问题 更多 >