【问题标题】:What's the relationship between Tensorflow's dataflow graph and DNN?Tensorflow的数据流图和DNN有什么关系?
【发布时间】:2018-05-04 15:15:02
【问题描述】:
众所周知,DNN 由许多层组成,这些层由许多神经元组成,它们将相同的功能应用于输入的不同部分。同时,如果我们使用 Tensorflow 执行 DNN 任务,我们会得到一个由 Tensorflow 自动生成的数据流图,我们可以使用 Tensorboard 将数据流图可视化。但是该层中没有神经元。所以我想知道 Tensorflow 数据流图和 DNN 之间的关系是什么?当 DNN 的层映射到数据流图中的一个神经元时,它是如何表示的?DNN 中的神经元和 tensorflow 中的节点是什么关系(代表一个操作)?刚开始学习DNN和Tensorflow,请帮我整理思路。谢谢:)enter image description here
【问题讨论】:
标签:
tensorflow
deep-learning
【解决方案1】:
您必须区分 DNN 的隐喻表示和它的数学描述。经典神经元背后的数学是加权输入的总和 + 偏差(通常在此结果上调用激活函数)
所以在这种情况下,你有一个输入向量与一个权重向量(包含可训练变量)相乘,然后与一个偏置标量相加(也是可训练的)
如果您现在考虑一层神经元而不是一个神经元,那么权重将变成一个矩阵,而偏差将变成一个向量。所以计算前馈层只不过是矩阵乘法,然后是向量之和。
这是您可以在 tensorflow 图中看到的操作。
您实际上可以通过这种方式构建您的神经网络,而无需使用使用层抽象的所谓高级 API。 (很多人在 tensorflow 早期就这样做了)
tensorflow 为您所做的实际“魔法”是计算并执行此前言传递的导数,以计算权重的更新。