如何从sklearn的wrapp中访问Keras layers属性

2024-04-19 17:31:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图利用这篇文章中的layers{}: How to extract weights "from input layer to hidden layer" and "from hidden layer to output layer" with Keras API?

但是,我正在使用sklearnKerasRegressor包装器,这样我就可以使用GridSearch。我想知道是否有任何方法可以从GridSearch中访问get_weights,以便跟踪每个CV分割使用的权重

这是我的密码。我尝试使用代码块中的最后一行,但出现以下错误:

GridsearchCV object has no attribute 'layers'

X = data.iloc[:, 0:8]
y = data.iloc[:, 8:9]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.25, shuffle=False)


test_index = X_test.index.values.tolist()

scalarX = MinMaxScaler()
scalary = MinMaxScaler()

scalarX.fit(X_train)
scalary.fit(y_train)

X_train, X_test = scalarX.transform(X_train), scalarX.transform(X_test)
y_train, y_test = scalary.transform(y_train), scalary.transform(y_test)

def build_regressor(units1):
    regressor = Sequential()
    regressor.add(Dense(units=units1, input_dim=8, activation='relu'))
    regressor.add(Dense(units=1))
    regressor.compile(loss='mean_squared_error', optimizer='adam', 
metrics=['mae', 'accuracy'])
    return regressor

regressor = KerasRegressor(build_fn=build_regressor)

ann_params = {'batch_size': [10, 25, 35],
              'nb_epoch': [20, 50],
              'units1': [8, 16, 32, 64]}


gsc = GridSearchCV(regressor, param_grid=ann_params,
      cv=TimeSeriesSplit(n_splits=5).split(X_train), verbose=10, n_jobs=-1, refit=True)


gsc.fit(X_train, y_train)
layers = gsc.layers[1].get_weights() #doesn't work -returns error above

Tags: tofromtestbuildlayerlayerstransformtrain