У меня два уровня, 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