关于张量流密集层实现的问题



来自 https://www.tensorflow.org/api_docs/python/tf/keras/layers/Dense(*注释部分(

对于 (batch_size, d0, d1( 的输入,为什么每个子张量 (1, 1, d1( 都使用相同的(d1, units( 内核?

此外,为什么高维密集层操作被分解为在输入节点的子集上工作,而不是从所有 d0xd1 输入到输出节点的权重?

如果我错过了一些明显的东西,我深表歉意,并感谢您的任何帮助!

所以我深入研究了源代码,发现Tensorflow改变了他们实现密集操作的方式,我问我在uni的老板为什么做出这个改变。

在 tf1 中,对于秩 2>输入,他们扁平化了输入,只做了一个常规的一维密集操作。

https://github.com/tensorflow/tensorflow/blob/r1.15/tensorflow/python/keras/layers/core.py

在 tf2 中,对于秩 2>输入,他们使用张量点运算。这使用较小的内核并将其共享给所有输入子张量。这具有共享学习到的通道信息的效果。

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/keras/layers/ops/core.py

最新更新