我需要创建一个具有 600 个神经元的网络模型。每个神经元可以接受 4 个输入连接。神经元的输入来自M(待计算)根纤维,每根纤维最多可以给神经元53个输出连接。神经元获得的每个连接都必须来自不同的纤维(两条纤维不应连接到同一个神经元)。每个神经元必须获得 4 个输入,并且应该看到没有两个神经元从所有 4 个相同的纤维获得连接。使用的纤维数量必须尽可能少。
P.S:我想我可以构建一个 600xM 的二进制矩阵,使得每行的总和为 4,每列的总和最大为 53。你如何在 Matlab 或任何其他方式中做到这一点。谢谢。
最佳答案
这里有一种构建二进制矩阵(600 x m)的简单方法,非零行的总和正好为 4,并且每列的总和为 53(如果我理解正确的话可能会更低),直到有更多的行填充使得它们的总和为 4:
m=12;
A=zeros(600,m);
cind=randperm(size(A,1));
for n=1:numel(cind)
ind=find(sum(A)<53);
try
A(cind(n),ind(randperm(numel(ind),4)))=1;
catch err
end
end
关于algorithm - 创建一个沿行和列具有常量和的二维二进制矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23947759/