每次循环时,Keras get_weights需要更长的时间进行计算

时间:2018-02-23 17:20:48

标签: python keras

我正在尝试使用遗传算法训练keras模型,因此对于每一代,我生成100个随机模型以使用部分作为群体的突变。在合并和变异时,我直接使用权重作为numpy数组进行处理,但是我注意到当使用get_weights函数时,每次运行它都需要更长的时间,即使我从相同的权重中获取权重尺寸模型每次。我简化了我的代码以显示以下行为:

import time
import numpy as np
from keras.layers.core import Dense, Activation
from keras.models import Sequential

def build_model():
    model = Sequential()

    model.add(Dense(
        input_dim=12,
        output_dim=8))

    model.add(Dense(
        output_dim=4))
    model.add(Activation("linear"))

    model.compile(loss="mse", optimizer="rmsprop")
    return model

while True:    
    model = build_model()
    start_time = time.time()
    mut1 = np.array(model.layers[0].get_weights())
    mut2 = np.array(model.layers[1].get_weights())
    print(time.time() - start_time)
    del(mut1)    ##
    del(mut2)    ## Added these to rule-out a memory issue
    del(model)   ##

在前50次左右的迭代后,行为变得清晰。我已经尝试在pycharm中进行调试,但至少在查看变量列表时,没有一个变得越来越大或者没有被删除的胭脂变量,一切看起来都是我期望的。任何想法为什么计算时间不断增加?

还有一点要注意,我已经对build_model()函数进行了类似的计算,并且在我的计算机上需要一个0.07秒的常量,所以我不认为这是问题的根源。

谢谢!

0 个答案:

没有答案