gpt4 book ai didi

keras - 如何使用 KerasClassifier 验证拆分和使用 scitkit 学习 GridSearchCV

转载 作者:行者123 更新时间:2023-12-04 04:21:24 27 4
gpt4 key购买 nike

我想尝试测试一些超参数,那就是我想使用 GridSearchCV,因为这似乎就是这样做的方法。

但我也想使用验证拆分。使用像 EarlyStopping 或/和 ReduceLROnPlateau 这样的回调。所以我的问题是:
我如何正确实现 GridSearchCV + validation_split 验证拆分中的所有数据都没有用于训练并且整个训练集都用于训练我的模型?
Afaik GridSearchCV 再次拆分我剩余的火车数据(即 1-validation_split)并再次拆分?我得到了很高的准确性,我认为我没有正确分割数据

model = KerasClassifier(build_fn=create_model,verbose=2, validation_split=0.1)
optimizers = ['rmsprop', 'adam']
init = ['glorot_uniform',
#'normal',
'uniform',
'he_normal',
#'lecun_normal',
#'he_uniform'
]
epochs = [3] #5,8,10,30
batches = [64] #32,64
param_grid = dict(optimizer=optimizers, epochs=epochs, batch_size=batches, init=init)
grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid_result = grid.fit(X_train, Y_train)

最佳答案

您可以通过将额外的参数传递给 grid.fit() 来使用您自定义的验证数据。函数是 validation_data=(X_test, Y_test) . documentation , 声明 grid.fit()函数接受可以传递给实际 model.fit() 的所有有效参数默认 Keras 函数 model .因此,您可以通过 grid.fit() 传递验证数据。功能。您也可以在那里传递回调函数。
我在下面添加了一个工作代码(应用于 MNIST 数字数据集)。注意我是如何在 grid.fit() 上添加验证数据的并删除了“validation_split”:

import tensorflow as tf
import numpy as np
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import GridSearchCV
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical

(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
Y_train = to_categorical(Y_train, 10)
Y_test = to_categorical(Y_test, 10)
X_train = np.expand_dims(X_train, 3)
X_test = np.expand_dims(X_test, 3)

def create_model(optimizer, init):
model = tf.keras.Sequential([
tf.keras.layers.Convolution2D(32, 3, input_shape=(28, 28, 1),
activation='relu', kernel_initializer=init),
tf.keras.layers.Convolution2D(32, 3, activation='relu',
kernel_initializer=init),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(12, activation='relu',
kernel_initializer=init),
tf.keras.layers.Dense(10, activation='softmax',
kernel_initializer=init),
])
model.compile(loss='categorical_crossentropy',
optimizer=optimizer, metrics=['accuracy'])
return model

model = KerasClassifier(build_fn=create_model, verbose=2,)
optimizers = ['rmsprop', 'adam']
init = ['glorot_uniform',
#'normal',
'uniform',
'he_normal',
#'lecun_normal',
#'he_uniform'
]
epochs = [4,]
batches = [32, 64]
param_grid = dict(optimizer=optimizers, nb_epoch=epochs,
batch_size=batches, init=init)

grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid_result = grid.fit(X_train, Y_train, validation_data=(X_test, Y_test))
希望这可以帮助。谢谢。

关于keras - 如何使用 KerasClassifier 验证拆分和使用 scitkit 学习 GridSearchCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59225328/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com