如何在CNTK中定义递归卷积网络层?

2024-06-11 03:10:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我是CNTK的新手,正在使用它出色的python API。我不知道如何定义递归卷积网络层,因为Recurrence()似乎只假设了一个常规网络层。在

更具体地说,我希望在卷积层之间有重复。在

任何一个指针,甚至一个简单的例子都将是高度赞赏的。非常感谢。在


Tags: api高度定义网络层卷积常规例子指针
1条回答
网友
1楼 · 发布于 2024-06-11 03:10:21

有两种有意义的方法(即不破坏卷积所依赖的自然图像的结构)。最简单的是在最后一层有一个LSTM,即

convnet = C.layers.Sequential([Convolution(...), MaxPooling(...), Convolution(...), ...])
z = C.layers.Sequential([convnet, C.layers.Recurrence(LSTM(100)), C.layers.Dense(10)])

一个10级的问题。在

更复杂的方法是定义你自己的只使用卷积的递归细胞,从而尊重自然图像的结构。要定义一个循环单元,你需要写一个函数,它接受前一个状态和一个输入(即,如果你正在处理视频,一个帧),然后输出下一个状态和输出。例如,您可以查看the implementation of the GRU in the CNTK layers module,并对其进行调整以使其在任何地方都使用convolution,而不是{}。如果这是你想要的,我可以试着提供这样一个例子。不过,我鼓励你先试试简单的方法。在

更新:我写了一个简单的卷积GRU。您需要特别注意初始状态是如何定义的,但在其他方面它似乎可以正常工作。这是图层定义

^{pr2}$

下面是如何使用它

^{3}$

相关问题 更多 >