生成模型的时间越来越长

时间:2016-11-28 15:42:08

标签: python python-2.7 tensorflow keras

我使用此函数生成keras模型:

def nn_model(n1,n2=None,n3=None):
    model = Sequential()
    model.add(Dense(n1, input_dim=len(features), init='he_normal'))
    model.add(PReLU())
    if n2 != None:
        model.add(Dense(n2, init = 'he_normal'))
        model.add(PReLU())
    if n3 != None:
        model.add(Dense(n3, init = 'he_normal'))
        model.add(PReLU())
    model.add(Dense(1, init='he_normal'))
    model.compile(loss='mae', optimizer='adadelta')
    return(model)

运行它的代码:

N1 = [10,9,8,7,6]
N2 = [8, 7, 6, 5, 4, 3, None]
N3 = [6, 5, 4, 3, 2, None]
test_list = [item for item in product(N1,N2,N3) if sorted(item, reverse = True) == list(item)][start_index:]
for m,(n1,n2,n3) in enumerate(test_list):
    model = nn_model(n1,n2,n3)
    # fit model and predict 

它工作正常,但每次调用它时,返回编译模型的速度会变慢。如果我重新启动Python,我会像平常一样再次工作,但在每次迭代后它会变慢。在30次迭代之后,它花费了将近5分钟,而第一次呼叫则需要10秒。 我运行的模型在形状和大小上都相似,所以这不是问题。如果我先生成相同的模型,或者在10次迭代后生成相同的模型,则在10次迭代后会更长。

有谁知道这可能来自何处以及如何避免它(没有每5次迭代重新启动python)。 我在IPython中运行它,在GTX650Ti(1Go内存)上的张量流后端。 值得注意的是我的RAM消耗会慢慢增长(通过调用~50-100Mo)。

1 个答案:

答案 0 :(得分:1)

所有模型都是在默认的TF图形中创建的,随着时间的推移会变得越来越大。

解决方案是在图形范围内创建模型,或使用以下Keras实用程序清除默认图形:

from keras import backend as K
K.clear_session()