我们希望构建一个类似于随机大脑的神经元网络。这意味着:
- 我们有AxB个输入和CxD个输出。
- 我们希望有K个神经元(其中K >= CxD),这些神经元之间随机连接。
- 然而,所有K个神经元都必须至少连接到AxB个输入中的一个,
- 并且所有K个神经元都必须至少连接到CxD个输出中的一个。
类似于这样的结构(这里AxB=5, K=4, CxD=2):
神经元应执行的操作是加权求和加上某种减少操作,如LeakyReLU。
可以想象,当连接的随机性被控制,使得连接在图像块上局部化,类似于CNN的层时,可以产生有趣的结果。
如何在PyTorch中实现这种逐个处理神经元的方法呢?
回答:
这里有两个问题:主要问题是如何随机抽样连接,次要问题是如何优化一个稀疏的线性层。
关于次要问题,你可以根据链接的答案实现一个稀疏全连接层。
关于随机连接性,你需要以一种没有“循环”的方式来实现它。