Responder a: KerasClassifier Deprecated

#42169

Boa noite, estou com o mesmo problema.

Mesmo usando o fonte dos downloads tem alguns itens que não funcionam mais, por exemplo a aula “Tuning (ajuste) dos parâmetros”.
Usando o fonte disponibilizado:

import pandas as pd
from tensorflow.keras.models import Sequential # atualizado: tensorflow==2.0.0-beta1
import tensorflow as tf # atualizado: tensorflow==2.0.0-beta1
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import GridSearchCV
from tensorflow.keras import backend as k # atualizado: tensorflow==2.0.0-beta1

previsores = pd.read_csv(‘entradas_breast.csv’)
classe = pd.read_csv(‘saidas_breast.csv’)

def criarRede(optimizer, loss, kernel_initializer, activation, neurons): # atualizado: tensorflow==2.0.0-beta1
k.clear_session()
classificador = Sequential([
tf.keras.layers.Dense(units=neurons, activation = activation, kernel_initializer = kernel_initializer, input_dim=30),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(units=neurons, activation = activation, kernel_initializer = kernel_initializer),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(units=1, activation = ‘sigmoid’)])
classificador.compile(optimizer = optimizer, loss = loss, metrics = [‘binary_accuracy’])
return classificador

classificador = KerasClassifier(build_fn = criarRede)
parametros = {‘batch_size’: [10, 30],
‘epochs’: [50, 100],
‘optimizer’: [‘adam’, ‘sgd’],
‘loss’: [‘binary_crossentropy’, ‘hinge’],
‘kernel_initializer’: [‘random_uniform’, ‘normal’],
‘activation’: [‘relu’, ‘tanh’],
‘neurons’: [16, 8]}
grid_search = GridSearchCV(estimator = classificador,
param_grid = parametros,
scoring = ‘accuracy’,
cv = 5)
grid_search = grid_search.fit(previsores, classe)
melhores_parametros = grid_search.best_params_
melhor_precisao = grid_search.best_score_
Ocorre este erro:
Traceback (most recent call last):
File “D:\Mestrado\2022\IA\DL\Material DL\redes neurais artificiais\classificacao binaria\breast_cancer_tuning.py”, line 4, in <module>
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
ModuleNotFoundError: No module named ‘tensorflow.keras.wrappers’

Alterei o fonte para:

import pandas as pd
import tensorflow as tf
#from tensorflow.keras import models
#from tensorflow.keras import layers
from scikeras.wrappers import KerasClassifier
from sklearn.model_selection import cross_val_score
from tensorflow.keras import backend as k # atualizado: tensorflow==2.0.0-beta1
from tensorflow.keras.models import Sequential # atualizado: tensorflow==2.0.0-beta1
#para fazer o tunning pesquisando as melhores entradas
from sklearn.model_selection import GridSearchCV

previsores = pd.read_csv(‘entradas_breast.csv’)
classe = pd.read_csv(‘saidas_breast.csv’)

def criarRede(optimizer, loss, kernel_initializer, activation, neurons): # atualizado: tensorflow==2.0.0-beta1
k.clear_session()
classificador = Sequential([
tf.keras.layers.Dense(units=neurons, Activation = activation, kernel_initializer = kernel_initializer, input_dim=30),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(units=neurons, Activation = activation, kernel_initializer = kernel_initializer),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(units=1, activation = ‘sigmoid’)])
classificador.compile(optimizer = optimizer, loss = loss, metrics = [‘binary_accuracy’])
return classificador

classificador = KerasClassifier(build_fn = criarRede)
parametros = {‘batch_size’: [10, 30],
‘epochs’: [50, 100],
‘optimizer’: [‘adam’, ‘sgd’],
‘loss’: [‘binary_crossentropy’, ‘hinge’],
‘kernel_initializer’: [‘random_uniform’, ‘normal’],
‘activation’: [‘relu’, ‘tanh’],
‘neurons’: [16, 8]}
grid_search = GridSearchCV(estimator = classificador,
param_grid = parametros,
scoring = ‘accuracy’,
cv = 5)
grid_search = grid_search.fit(previsores, classe)
melhores_parametros = grid_search.best_params_
melhor_precisao = grid_search.best_score_

Agora tenho o erro:
ValueError: Invalid parameter activation for estimator KerasClassifier.
This issue can likely be resolved by setting this parameter in the KerasClassifier constructor:
KerasClassifier(activation=relu)
Check the list of available parameters with estimator.get_params().keys()

Já tenho todas as bibliotecas instaladas.
poderiam por favor me enviar um fonte que pode ser executado em 2023?
Muito obrigado.