我正在嘗試使用 ImageDataGenerators 實作 RandomizedSearchCV。
下面是用于訓練集的生成器示例:
train_datagen = ImageDataGenerator(rotation_range=20,
rescale=1./255,
shear_range=0.2,
zoom_range=0.25,
horizontal_flip=True,
width_shift_range=0.2,
height_shift_range=0.2)
train_generator = train_datagen.flow_from_directory(paths["train_path"],
batch_size=train_batch_size,
class_mode='binary',
target_size=(image_shape[0], image_shape[1]))
我對模型做了同樣的事情validation_generator
,最后模型被安裝為:
model_history = model.fit(train_generator,
epochs=200,
steps_per_epoch=train_steps_per_epoch,
validation_data=validation_generator,
validation_steps=valdation_steps_per_epoch,
callbacks=[callbacks.EarlyStopping(patience=20)])
我想應用網格搜索(使用 sklearn RandomizedSearchCV)來優化我的模型,因此我使用了 SciKeras:
rnd_search_cv = RandomizedSearchCV(keras_reg, param_distribs, n_iter=10, cv=3)
其中keras_reg
是KerasClassifier
包裝 sklearn 模型的,param_distribs
是具有超引數值的字典。
最后我安裝了 RandomizedSearchCV 物件,如下所示:
rnd_search_cv.fit(train_generator,
epochs=200,
steps_per_epoch=train_steps_per_epoch,
validation_data=validation_generator,
validation_steps=valdation_steps_per_epoch,
callbacks=[callbacks.EarlyStopping(patience=20)])
我有以下錯誤:
Traceback (most recent call last):
File "/home/docker_user/.local/lib/python3.8/site-packages/sklearn/model_selection/_validation.py", line 684, in _fit_and_score
estimator.fit(X_train, **fit_params)
TypeError: fit() missing 1 required positional argument: 'y'
你知道如何整合 RandomizedSearchCV 和 ImageDataGenerator 物件嗎?
uj5u.com熱心網友回復:
我不推薦以下解決方案和方法。我強烈建議使用KerasTuner
,但如果你想像你keras.preprocessing.image.DirectoryIterator
一樣輸入train_generator
,RandomizedSearchCV
你需要提取然后X
將它們輸入到 RandomizedSearchCV,如下所示:Y
DirectoryIterator
import numpy as np
len_dataset = 100
batch_size = 32
image_size = (150,150)
channel_images = 3
num_clases = 5
x_train = np.empty((len_dataset*batch_size,
image_size[0],
image_size[1],
channel_images))
y_train = np.empty((len_dataset*batch_size, num_clases))
for idx in range(len_dataset):
x_batch, y_batch = train_generator.__getitem__(idx)
for i in range(x_batch.shape[0]):
x_train[idx*batch_size i] = x_batch[i]
y_train[idx*batch_size i] = y_batch[i]
rnd_search_cv.fit(x_train, y_train)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/493877.html
標籤:Python 张量流 喀拉斯 scikit-学习 超参数
上一篇:如何在keras中編輯功能模型?
下一篇:將多個元素移動到新的div