Как вызвать методы Python из Java при использовании Keras? - PullRequest
0 голосов
/ 02 июля 2019

Я хочу вызвать класс Python из Java. Более конкретно, я хочу вызвать два метода, которые генерируют / загружают модели keras.

Я использовал Jython, но после вызова моего module.py он не находит импорт keras. Теперь, какие у меня есть альтернативы? Я не хочу манипулировать объектами Java, хочу лишь манипулировать весами отдельных сетевых слоев. Возможно ли в Java манипулировать весами керас? Любая помощь очень ценится. Код для манипулирования весами следующий:

def update_population(self,win_rate,population_size):
    models = []
    json_file = open('model_num.json', 'r')
    loaded_model_json = json_file.read()
    json_file.close()
    loaded_model = model_from_json(loaded_model_json)
    for counter in range(population_size):
        loaded_model.load_weights('network' + str(counter) + '.h5')
        models.append(loaded_model)
    top_3_models = sorted(zip(win_rate, models), reverse=True)[:3]
    top_models = []
    for item in top_3_models:
        top_models.append(item[1])
    new_models = []
    clone_counter = 3
    for model in top_models:
        new_models.append(model)

        old_weights = []
        for layer in model.layers:
            old_weights.append(layer.get_weights())
        for i in range(clone_counter):
            new_model = clone_model(model)
            new_weights = copy.copy(old_weights)
            for weight in new_weights:
                weight += normal(0,.1)
            new_model.set_weights(new_weights)
            new_models.append(new_model)
        if clone_counter ==3:
            clone_counter = 2
    counter = 0
    for model in new_models:
        model.save('network' + str(counter) + '.h5')
        counter +=1
...