对于多个三维的输入X于多个三维卷积核运用tensorflow中张量的表示,都是用四维张量存储:
x.shape = (None,高度,宽度,深度) 其中None表示输出数据的个数;
k.shape = (高度,宽度,深度,个数)
所以说,K的存储格式与X的存储格式不同,主要在,X的个数在第一维上表示,而K的个数在第四维上表示。而X的深度在第四维上表示,K的深度在第三维上表示。
例如对于如下的两个2x2x2的卷积核进行存储:
代码如下:
其中为一行是一个三维张量,一维张量(最内部的张量,划横线的)内元素的个数,表示K的数量,即第四维的数值。例如这里的【3,1】,【1,2】元素的个数都为2,表示K的数量为2。
我们再来看看X的存储:
对于2个3x3x2的张量:
代码如下:
对于X而言,每一行是一个二维张量,一维张量(最内部的张量)内的元素个数,表示X的深度。例如这里的【1,4】,【9,3】等,元素内的个数为2,代表深度为2。
总的来说,导致这种差异的根本原因是因为:X的shape的第一维表示数据的个数,而第四维表示每一个数据的深度;K的shape的第四维表示卷积核的个数。