Python 管道GridSearchCV,不同步骤对应的参数
我正在尝试在管道中进行一些超参数调整,并进行以下设置:Python 管道GridSearchCV,不同步骤对应的参数,python,pipeline,hyperparameters,gridsearchcv,Python,Pipeline,Hyperparameters,Gridsearchcv,我正在尝试在管道中进行一些超参数调整,并进行以下设置: model = KerasClassifier(build_fn = create_model, epochs = 5) pipeline = Pipeline(steps =[('Tokenizepadder', TokenizePadding()), ('NN', model)] ) 在Tokenizepadder和我的神经网络中都有一个变量“maxlen”(对于神经网络,它被称
model = KerasClassifier(build_fn = create_model, epochs = 5)
pipeline = Pipeline(steps =[('Tokenizepadder', TokenizePadding()),
('NN', model)] )
在Tokenizepadder和我的神经网络中都有一个变量“maxlen”(对于神经网络,它被称为max_length,我担心将它们命名为相同的名称会导致代码中的错误)。当我尝试执行网格搜索时,我正在努力使这些值对应起来。如果我分别对这些值进行网格搜索,它们将不会出现马赫数,并且会出现输入数据与神经网络不匹配的问题
简言之,我想做如下工作:
pipeline = Pipeline(steps =[('Tokenizepadder', TokenizePadding()),
('NN', KerasClassifier(build_fn = create_model, epochs = 5, max_length = pipeline.get_params()['Tokenizepadder__maxlen']))] )
因此,当我对参数“Tokenizepadder\uu maxlen”执行网格搜索时,它会将值“NN\uu max\u length”更改为相同的值。可能是您可以更改分类器和标记器,以传递
max\u len
参数。然后,仅使用标记器max_len
参数进行网格搜索。
不是最干净的方式,但可能会
from sklearn.base import BaseEstimator, TransformerMixin, EstimatorMixin
class TokeinizePadding(BaseEstimator, TransformerMixin):
def __init__(self, max_len, ...):
self.max_len = max_len
...
def fit(self, X, y=None):
...
return self
def transform(self, X, y=None):
data = ... # your stuff
return {"array": data, "max_len": self.max_len}
class KerasClassifier(...):
...
def fit(data, y):
self.max_len = data["max_len"]
self.build_model()
X = data["array"]
... # your stuff
可能您可以更改分类器和标记器,以传递
max\u len
参数。然后,仅使用标记器max_len
参数进行网格搜索。
不是最干净的方式,但可能会
from sklearn.base import BaseEstimator, TransformerMixin, EstimatorMixin
class TokeinizePadding(BaseEstimator, TransformerMixin):
def __init__(self, max_len, ...):
self.max_len = max_len
...
def fit(self, X, y=None):
...
return self
def transform(self, X, y=None):
data = ... # your stuff
return {"array": data, "max_len": self.max_len}
class KerasClassifier(...):
...
def fit(data, y):
self.max_len = data["max_len"]
self.build_model()
X = data["array"]
... # your stuff