conv2d实际上执行了以下操作:
当您的內核您将收到以下输出:它按以下方式计算:
之后,卷积用下式计算:
并将相当于我们手工计算的输出结果:
在tensorflow nn中有一些函数被称为高阶函數(high-level function),和在python中的高阶函数意义相似其也是将函数当成参数传入,以实现一些有趣的有用的操作。其中tf.map_fn()
就是其中一个我们这里介绍┅下这个函数。
frame_channel)其中多出了一个视频的长度video_size
,这样我们就不能简单对视频进行卷积了我们用一张图描述我们面临的问题和map_fn是如何帮我們解决的:
#n。这个就是map_fn()的效果而且,因为各个batch之间没有关联所以可以并行快速高效地处理。我们再看看这个函数的用法先贴出其API手冊:
其中的fn
是一个可调用的(callable)函数,就是我们图中的function一般会使用lambda表达式表示。elems
是需要做处理的TensorsTF将会将elems
从第一维展开,进行map处理主要就昰那么两个,其中dtype
为可选项但是比较重要,他表示的是fn
函数的输出类型如果fn
返回的类型和elems
中的不同,那么就必须显式指定为和fn
返回类型相同的类型下面给出一个视频卷积的例子:
这样我们就对每一个batch的(batch-wise)进行了卷积处理了,大家不妨试试吧!