将某些权重指定为在同一层中共享/并列

时间:2019-07-08 15:39:23

标签: python tensorflow keras keras-layer

我正在使用在keras中使用功能性API的神经网络架构,其中我有一个自定义层,其中四个节点向前馈入一个节点,如下图所示。我想将前两个权重设置为不可训练,并且将与输入x1和x2对应的权重的值设置为零(我可以执行此部分),并且我想指定一个自定义约束,使权重与输入x3和x4相关联的是相同(我无法实现约束权重的约束)。

到目前为止,我所做的就是实现答案中建议的自定义层:Specify connections in NN (in keras)

然后我通过指定如下连接来在代码中调用该层:

outputTensor = CustomConnected(units= 1,connections=tf.constant([0.0,0.0,1.0,1.0]),output_dim= 1,use_bias=False,name='custom_layer')(inputTensor)

这样,连接数组中的前两个零将确保这些连接被切断。我在训练之前将其值设置为0,以确保它们保持为0,例如:

model.layers[#].set_weights([np.array([0,0,1,1])])

在训练过程中如何实现使x_3和x_4的权重保持相同的约束?我希望他们学习相同的价值。我尝试将self.kernel变量指定为numpy数组,例如array(0,0,weight,weight),但这没有用。是否有可能在keras或tensorflow中做类似的事情?

如果有帮助,我很乐意发布更多代码。

enter image description here

0 个答案:

没有答案