def crossingover1(model1, model2): result = [] for layer_idx in range(len(model1.layers)): m1_weights = Weights(model1.layers[layer_idx]) m2_weights = Weights(model2.layers[layer_idx]) m1_weights_list = m1_weights.get_weights_list() m2_weights_list = m2_weights.get_weights_list() model_idx = random.randint(0, 1) if model_idx == 0: result.extend(m1_weights_list) else: result.extend(m2_weights_list) return result
def crossingover3(model1, model2): result = [] for layer_idx in range(len(model1.layers)): m1_weights = Weights(model1.layers[layer_idx]) m2_weights = Weights(model2.layers[layer_idx]) m1_weights_list = m1_weights.get_weights_list() m2_weights_list = m2_weights.get_weights_list() if len(m1_weights_list) == 0: continue separate_idx = random.randint(0, len(m1_weights_list) - 1) for weight_idx in range(0, separate_idx): result.append(m1_weights_list[weight_idx]) for weight_idx in range(separate_idx, len(m1_weights_list)): result.append(m2_weights_list[weight_idx]) return result