我正在尝试在 JAX 中实现 LeNet5。我想我可以完成大部分工作,这是供参考的架构:
我想我知道如何实现前两层:
c1 = stax.Conv(out_chan=6, filter_shape=(5, 5), strides=(1, 1))
s2 = stax.parallel(
stax.AvgPool(window_shape=(2, 2), strides=(2, 2)),
stax.AvgPool(window_shape=(2, 2), strides=(2, 2)),
stax.AvgPool(window_shape=(2, 2), strides=(2, 2)),
stax.AvgPool(window_shape=(2, 2), strides=(2, 2)),
stax.AvgPool(window_shape=(2, 2), strides=(2, 2)),
stax.AvgPool(window_shape=(2, 2), strides=(2, 2))
)
但是,我卡住的地方是 C3 层。问题是 C3 中的通道没有连接到S2 中的每个通道。根据下表,C3 中的 16 个通道中的每一个仅连接到 S2 中的通道子集:
0123456789ABCDEF
0x...xxx..xxxx.xx
1xx...xxx..xxxx.x
2xxx...xxx..x.xxx
3.xxx..xxxx..x.xx
4..xxx..xxxx.xx.x
5...xxx..xxxx.xxx
我从(相当简陋的)JAX/STAX文档中看不到如何设置像这样的稀疏连接的卷积层。