如何使用tensorflow创建自定义连接的神经网络?
我想创建一个在层之间具有特定固定连接的网络。 例如 我试着研究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中不可能,那么请建议可以使用的其他库。谢谢 你总能找到解决办法。假设一个图层确实是
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
没有训练,即使它可能有其初始值。它通过使初始化也稀疏来工作。谢谢……)