Python 用张量张量流进行矢量化

Python 用张量张量流进行矢量化,python,tensorflow,Python,Tensorflow,我有形状为(10,2)的张量x 我有形状为(10,)的张量y 我有形状为(10,)的张量 我想用下面的公式计算一个形状为(2,1)的张量dw 设dw1和dw2为张量中的元素dw dw1=tf.减少求和(x1*(y-y\u pred)*(-2/n) 其中, x1=张量x的第一列 n=标量 dw2=tf.减少求和(x2*(y-y\u pred)*(-2/n) 其中, x2=张量x的第二列 n=标量 然而,张量x将具有动态形状。 如果张量x有一个形状(10,3) dw的形状为(3,1) 在ML透视图中

我有形状为(10,2)
的张量x 我有形状为(10,)
的张量y 我有形状为(10,)的张量

我想用下面的公式计算一个形状为(2,1)的张量dw

设dw1和dw2为张量中的元素dw
dw1=tf.减少求和(x1*(y-y\u pred)*(-2/n)
其中,
x1=张量x的第一列
n=标量

dw2=tf.减少求和(x2*(y-y\u pred)*(-2/n)
其中,
x2=张量x的第二列
n=标量

然而,张量x将具有动态形状。
如果张量x有一个形状(10,3)
dw的形状为(3,1)

在ML透视图中,我正在计算损失函数w.r.t权重的梯度。
损失函数为MSE

我知道如何使用for循环实现此功能。
但我不明白如何使用矢量化实现它,即不使用任何for循环


试试普通的老款:

说明:

tf.ones
创建一个矩阵用于演示。第一个参数标记它的形状。
x
的形状是10乘2,要将其乘以形状为10乘1的矩阵,您需要将
x

然后你只需要做矩阵乘法就可以了

请注意,
dtype=tf.float32
是必需的,如果没有它,可能会出现强制转换错误

x = tf.ones((10,2), dtype=tf.float32)
y = tf.ones((10,1), dtype=tf.float32) * 2
y_pred = tf.ones((10,1), dtype=tf.float32) * 3
n = 3

result = tf.matmul(tf.transpose(x), y-y_pred) / (-n/2)