如何使用tensorflow创建自定义连接的神经网络?

如何使用tensorflow创建自定义连接的神经网络?,tensorflow,neural-network,Tensorflow,Neural Network,我想创建一个在层之间具有特定固定连接的网络。 例如 我试着研究Tensorflow中的函数,但我只发现了带有正则化子的稠密网络,这并不是我想要的 如果在tensorflow中不可能,那么请建议可以使用的其他库。谢谢 你总能找到解决办法。假设一个图层确实是y=xW(Wx也是正确的),但您希望W中的某些条目始终为零。您可以按列操作: 对于输出的列i(或元素i,因为y是一个向量),y\u i=x*D\u i*W\u i。矩阵D_i是一个常数对角矩阵(tf.constant,tf.diag),用于控制

我想创建一个在层之间具有特定固定连接的网络。 例如

我试着研究Tensorflow中的函数,但我只发现了带有正则化子的稠密网络,这并不是我想要的


如果在tensorflow中不可能,那么请建议可以使用的其他库。谢谢

你总能找到解决办法。假设一个图层确实是
y=xW
Wx
也是正确的),但您希望
W
中的某些条目始终为零。您可以按列操作:

对于输出的列
i
(或元素
i
,因为
y
是一个向量),
y\u i=x*D\u i*W\u i
。矩阵
D_i
是一个常数对角矩阵(
tf.constant
tf.diag
),用于控制哪些元素为零

然后可以使用
tf.concat
将所有
y\u i
组合到矩阵
y


您可以将其抽象为一个函数,其签名可能类似于
def稀疏层(输入层、门矩阵、激活层等)
,返回输出层。

谢谢!我将努力实现这一点,并看到结果。。但是有一个问题,如果我们像这样强制权重为零,那么反向传播会如何影响这些权重呢?在我的例子中,理想的情况是梯度不会传播回零的权重。这种方法不起作用。通过这种方式,网络仍然会尝试在不应该存在的连接上训练权重。我们需要一个网络,其中连接边的权重是唯一需要训练的变量。有什么建议吗?@navyajapani让我们扩展表达式,我们有
y_i=x*D_i*W_i=[..x..]*diag([..D..])*转置([..W..])
。如果
d=0
,则
y_i=[..0..]*转置([..w..])=..+0*w+..
。因此
w
中的元素
w
对输出有影响,因此相对于
w
的梯度为0,因此
w
没有训练,即使它可能有其初始值。它通过使初始化也稀疏来工作。谢谢……)