我是python和TensorFlow的新手,最近几天我在学习" MNIST For ML Beginners"(https://www.tensorflow.org/get_started/mnist/beginners)时遇到了问题。
在本教程中,我们使用y = tf.nn.softmax(tf.matmul(X, W) + b)
来获取输出。
我的问题是,例如,X是[100,784]矩阵,W是[784,10]矩阵,b是[10]张量(就像[10,1]矩阵?),在我们调用之后tf.matmul(X,W)我们将得到一个[100,10]矩阵。这是我的问题,[100,10]矩阵如何在这里添加b [10]张量?这对我没有任何意义。
我知道为什么会有偏见,我知道为什么需要添加偏见。但我只是不知道" +"运营商解决了这个问题。
答案 0 :(得分:0)
这是因为一个名为广播的概念可以在Numpy和TensorFlow中找到。从高层次来看,这就是它的工作原理:
假设您正在使用支持广播的操作(例如+或*)并且有2个输入张量,X和Y.为了评估X和Y的形状是否兼容,操作系统将评估成对的尺寸从右边开始。在以下情况下,尺寸被视为兼容:
将这些规则应用于添加操作(+)和形状[100,10]和[10]的输入:
如果形状兼容并且输入的某个尺寸为1或缺失,则op将基本上平铺该输入以匹配另一个输入的形状。
在您的示例中,添加操作将在执行添加之前有效地将形状[10]的Y平铺到形状[100,10]。
有关更多详细信息,请参阅有关广播的Numpy文档(https://docs.scipy.org/doc/numpy-1.13.0/user/basics.broadcasting.html)