개요

keras를 통해 deep non linear regression 하는 예제 코드를 작성하여 정리해둔다.
backend는 tensorflow를 사용하였다.

from keras import backend as K

def root_mean_squared_error(y_true, y_pred):
    return K.sqrt(K.mean(K.square(y_pred - y_true), axis=-1)) 

# define base model
def baseline_model():
    # create model
    model = Sequential()
    model.add(Dense(13, input_dim=x_train.shape[1], kernel_initializer='normal', activation='relu'))
    model.add(Dense(1, kernel_initializer='normal'))
    # Compile model
    model.compile(loss=root_mean_squared_error, optimizer='adam')
    return model

estimator는 아래와 같이 지정한다. verbose를 0보다 높은 값을 셋팅해야 디버깅이 가능하다.

estimator = KerasRegressor(build_fn=baseline_model, epochs=3, batch_size=1000, verbose=1)

아래와 같이 sklearn estimator로 사용 가능하다.

import numpy

# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)

# kfold = KFold(n_splits=10, random_state=seed)
# results = cross_val_score(estimator, x_train, y_train, cv=kfold)
# print("Results: %.2f (%.2f) MSE" % (results.mean(), results.std()))
estimator.fit(x_train, y_train)