from sklearn.pipeline import Pipeline
from sklearn.feature_selection import SelectKBest, mutual_info_classif
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
feature_selector = SelectKBest(score_func=mutual_info_classif, k=200)
def build_cnn(input_shape):
model = Sequential([
Conv2D(32, (3,3), activation='relu', input_shape=input_shape),
MaxPooling2D((2,2)),
Flatten(),
Dense(10, activation='softmax')
])
return model
pipeline = Pipeline([
('selector', feature_selector),
('cnn', build_cnn(input_shape=(..., ..., 1)))
])
pipeline.fit(X_train, y_train)
y_pred = pipeline.predict(X_test)