Как соединить два слоя keras из разных сетей - PullRequest
0 голосов
/ 07 августа 2020

У меня два уровня, layer1 и layer2, оба из разных сетей, оба - InputLayer или Dense.

layer1 имеет 5 узлов и подключен к Слой с 6 узлами, то есть форма весов (5, 6).

layer2 имеет 3 узла и соединен со слоем с 4 узлами, то есть форма весов (3, 4).

Я хочу создать новую модель, где layer1 подключен к layer2, а веса layer1 сохранены там, где это возможно.

Я написал небольшую функцию, которая обрабатывает это за меня, но есть ли способ сделать это родным keras?

моя функция:

def connect_weights(layer1, layer2):
    layer1_outbound_weights, layer1_outbound_biases = layer1.outbound_nodes[0].outbound_layer.get_weights()
    layer2_weights, layer2_biases = layer2.get_weights()

    layer1_outbound_weights_shape = np.shape(layer1_outbound_weights)
    layer1_new_weights_shape = (layer1.output.shape[-1], layer2.output.shape[-1])
    
    # Fill missing connections with random values
    layer1_new_weights = np.random.uniform(-1, 1, layer1_new_weights_shape) 
    
    x1, x2 = np.transpose((layer1_new_weights_shape, layer1_outbound_weights_shape)).min(axis=0)
    
    layer1_new_weights[:x1, :x2] = layer1_outbound_weights[:x1, :x2]
    return layer1_new_weights
...