我用这个功能来生成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次迭代后将会更长。
有谁知道这可能来自哪里以及如何避免它(无需重新启动python每5次迭代)。 我在IPython,GTX650Ti(1Go内部存储器)上的tensorflow后端运行此操作。 它也值得注意我的内存消耗量缓慢增长(约50-100Mo通话)。
不熟悉'keras',想到的不过第一件事可能会用'yield'替换'return',因为生成器消耗的内存要少得多,而且只有在调用时才会激活。 –