我使用Keras和Theano来创建一个多层感知器(MLP),用于训练和预测时间序列。无论我的网络结构和深度如何,我都无法找到(通过查阅Keras文档、StackOverflow、网络搜索等)Keras的model.fit()
函数使用的是哪种训练算法(如反向传播等)。
在之前使用Theano(不使用Keras)时,我可以自己定义参数调整的方式,如下所示:
self.train_step = theano.function(inputs=[u_in, t_in, lrate], outputs=[cost, y], on_unused_input='warn', updates=[(p, p - lrate * g) for p, g in zip(self.parameters, self.gradients)], allow_input_downcast=True)
找不到任何相关信息让我感到有些不安,担心自己错过了某些关键点,这可能是个非常愚蠢的问题。
能有人帮我解答吗?非常感谢!
回答:
请看这个例子 这里:
...model = Sequential()model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))model.add(Conv2D(64, (3, 3), activation='relu'))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Dropout(0.25))model.add(Flatten())model.add(Dense(128, activation='relu'))model.add(Dropout(0.5))model.add(Dense(num_classes, activation='softmax'))model.compile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.Adadelta(), metrics=['accuracy'])model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, validation_data=(x_test, y_test))score = model.evaluate(x_test, y_test, verbose=0)...
model.fit 并不使用算法来预测结果,而是使用你描述的模型。优化算法则在model.compile中指定
例如:
model.compile(loss=keras.losses.categorical_crossentropy, optimizer=**keras.optimizers.Adadelta()**, metrics=['accuracy'])
你可以在这里了解更多关于可用的优化器: https://keras.io/optimizers/