Я работаю над архитектурой нейронной сети, использующей функциональный API в керасе, в котором у меня есть пользовательский слой с четырьмя узлами, передающими в один узел, как показано на рисунке ниже. Я хочу установить первые два веса как необучаемые со значением ноль для весов, соответствующих входам x1 и x2 (я могу выполнить эту часть) и Я хочу указать пользовательское ограничение, такое, чтобы веса связанные с входами x3 и x4 одинаковы (я не могу реализовать ограничение связанных весов).
На данный момент я реализовал пользовательский слой, как было предложено в ответе: Укажите соединения в NN (в кератах)
и я вызываю слой в своем коде, указывая соединения следующим образом:
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 в виде массива типа «массив» (0,0, вес, вес), но это не сработало. Можно ли сделать что-то подобное в керасе или в тензорном потоке?
Я был бы рад опубликовать больше кода, если это поможет.
