我正在Keras训练一个简单的神经网络,其中Theano后端由4个密集层组成,连接到Merge层,然后连接到softmax分类器层。使用亚当进行训练,前几个时期每个训练时间大约60秒(在CPU中),但在此之后,每个时期的训练时间开始增加,在70年代以后超过400秒,使其无法使用。
我的代码有什么问题或假设发生这种情况吗?
这仅在使用Adam时发生,而不是与sgd,adadelta,rmsprop或adagrad一起使用。我会使用任何其他方法,但亚当会产生更好的结果。
代码:
modela = Sequential()
modela.add(Dense(700, input_dim=40, init='uniform', activation='relu'))
modelb = Sequential()
modelb.add(Dense(700, input_dim=40, init='uniform', activation='relu'))
modelc = Sequential()
modelc.add(Dense(700, input_dim=40, init='uniform', activation='relu'))
modeld = Sequential()
modeld.add(Dense(700, input_dim=40, init='uniform', activation='relu'))
model = Sequential()
model.add(Merge([modela, modelb, modelc, modeld], mode='concat', concat_axis=1))
model.add(Dense(258, init='uniform', activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
hist = model.fit([Xa, Xb, Xc, Xd], Ycat, validation_split=.25, nb_epoch=80, batch_size=100, verbose=2)