好吧,我认为主要的一点是,如果你在分批培养(即列车设置在一次训练的几个实例),TensorFlow总是假定x
的第零维表示每批事件的数量。
假设您想要将维度M的训练实例映射到维度N的目标实例。您通常可以通过将x(列向量)与NxM矩阵相乘来实现此目的(并且可选地添加维度N(也是列向量)),即
y = W * x + b,其中y也是列向量。
从线性代数的角度看,这是完全正确的。但是现在批量训练已经开始了,即一次训练了几个训练实例。 为了理解这点,不要将x(和y)看作维度M(和N)的向量,而是将维度看作Mx1(和Nx1)的矩阵。 由于TensorFlow假定组成批次的不同训练实例沿着第零维对齐,所以我们在这里陷入困境,因为第零维由一个单一实例的不同元素占据。 诀窍是然后以调换上述等式(记得产品的该换位也切换所述两个转置对象的顺序):
Y 1 T = X^T * w^T + B^T
这几乎是本教程中简要描述的内容。 请注意,y^T现在是维1xN(实际上是行向量)的矩阵,而x^T是维1xM(也是行向量)的矩阵。 W^T是维数为M×N的矩阵。在教程中,他们没有写x^T或y^T,而是根据这个转置方程简单地定义了占位符。唯一不清楚的是为什么他们没有定义b
这个“转置方式”。我假设+
运营商自动转换b
如果有必要,以获得正确的尺寸。其余部分现在很容易:如果批次大于1个实例,则只需“堆积”多个x
(1xM)矩阵,即对维度矩阵(AxM)(其中A是批量大小)。将有希望自动广播到这个事件数量(这意味着维度矩阵(AxN))。如果然后使用
Y 1 T = X^T * w^T + B^T,
你会得到一个目标的一个(AXN)矩阵批次的每个元素。
你能提供更多的上下文吗?你从哪里引用? –
[link](https://www.tensorflow.org/get_started/mnist/beginners)在“落实回归”下。 – ddgg007