Keras não funcionou

Visualizando 14 posts - 1 até 14 (de 14 do total)
  • Autor
    Posts
  • #45402
    Samuel Mendes
    Participante

      Boa noite estou enfrentando o mesmo problema, porém já atualizei com o código disponibilizado no Drive:

      import pandas as pd
      import tensorflow as tf
      #from tensorflow.keras import models
      #from tensorflow.keras import layers
      from tensorflow.keras.wrappers.scikit_learn import KerasClassifier # atualizado: tensorflow==2.0.0-beta1
      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

      Testei no Spyder e recebi: “o module named ‘tensorflow.keras.wrappers’”

      Testei no VS Code utlizando a extensão do Jupyter e recebi: “ModuleNotFoundError Traceback (most recent call last) Cell In[16], line 1 —-> 1 from keras.wrappers.scikit_learn import KerasClassifier # atualizado: tensorflow==2.0.0-beta1, ModuleNotFoundError: No module named ‘keras.wrappers”

      Testei no Colab: “—-> 5 from tensorflow.keras.wrappers.scikit_learn import KerasClassifier # atualizado: tensorflow==2.0.0-beta1”

      Por gentileza, poderiam validar se o código está de fato correto e atualizado?

      #45403
      Samuel Mendes
      Participante

        Resolvido pessoal, a solução foi usar:
        from scikeras.wrappers import KerasClassifier

         

        porém surgiu um outro problema, quando tento executar o grid_search:

        ValueError Traceback (most recent call last) Cell In[111], line 5 1 grid_search = GridSearchCV(estimator = classificador, 2 param_grid = parametros, 3 scoring = 'accuracy', 4 cv = 5) ----> 5 grid_search = grid_search.fit(previsores, classe) 6 melhores_parametros = grid_search.best_params_ 7 melhor_precisao = grid_search.best_score_ File c:\Users\samue\AppData\Local\Programs\Python\Python312\Lib\site-packages\sklearn\base.py:1473, in _fit_context.<locals>.decorator.<locals>.wrapper(estimator, *args, **kwargs) 1466 estimator._validate_params() 1468 with config_context( 1469 skip_parameter_validation=( 1470 prefer_skip_nested_validation or global_skip_validation 1471 ) 1472 ): -> 1473 return fit_method(estimator, *args, **kwargs) File c:\Users\samue\AppData\Local\Programs\Python\Python312\Lib\site-packages\sklearn\model_selection\_search.py:968, in BaseSearchCV.fit(self, X, y, **params) 962 results = self._format_results( 963 all_candidate_params, n_splits, all_out, all_more_results 964 ) 966 return results
        #45408
        Denny Ceccon
        Moderador

          Olá Samuel,

          Nós estamos preparando uma atualização desse curso, por enquanto você pode mudar todos os parâmetros relacionados ao modelo para o nome model__<parametro>. Exemplo: model__batch_size. Veja que são 2 underlines.

          #45411
          Samuel Mendes
          Participante

            Boa noite Denny, consegui colocar os parametros em snake_case como você recomendou e de fato essa linha de código rodou corretamente, porém quando passo para o grid_search ainda estou enfrentando o mesmo problema. Abaixo deixei o print com o erro que estou recebendo.

            print do erro

            #45412
            Samuel Mendes
            Participante

              Aqui está as outras linhas de código que rodaram normalmente:

              #45415
              Denny Ceccon
              Moderador

                Você precisa escrever model mesmo, não classificador, e botar dois underscores depois de model. Uma correção de minha parte: só nos parâmetros que a função criarRede aceita:

                parametros = {
                    'batch_size': [10, 30],
                    'epochs': [50, 100],
                    'model__optimizer': ['adam', 'sgd'],
                    'model__loss': ['binary_crossentropy', 'hinge'],
                    'model__kernel_initializer': ['random_uniform', 'normal'],
                    'model__activation': ['relu', 'tanh'],
                    'model__neurons': [16, 8]
                }
                
                • Esta resposta foi modificada 1 mês, 1 semana atrás por Denny Ceccon.
                • Esta resposta foi modificada 1 mês, 1 semana atrás por Denny Ceccon.
                • Esta resposta foi modificada 1 mês, 1 semana atrás por Denny Ceccon.
                • Esta resposta foi modificada 1 mês, 1 semana atrás por Denny Ceccon.
                #45424
                Samuel Mendes
                Participante

                  Boa noite Denny, alterei o algoritimo dos parametros conforme você recomendou porém retornou outro erro:

                  #45426
                  Denny Ceccon
                  Moderador

                    Isso não é um erro, é só um aviso que o parâmetro build_fn vai ser substituído por model em uma próxima versão da biblioteca.

                    #45427
                    Samuel Mendes
                    Participante

                      Bom dia Denny, realmente neste print acabou não mostrando o erro, porém abaixo desse ultimo print que mandei tem esse aqui, que esta retornando erro:

                      #45428
                      Denny Ceccon
                      Moderador

                        Acho que é porque na sua definição de criarRede, você escreveu loos. Corrija para loss.

                        #45434
                        Samuel Mendes
                        Participante

                          Boa tarde Denny, fiz a alteração aqui e funcionou, porém eu tinha deixado como loos pois na aula estava como “loos” também, estranho, mas deu certo agora hahaha, o único problema é que o programa começou a rodar infinitamente, rodou por quase 2hrs e tive que interromper, os paramentros são os mesmos dos prints que já mandei anteriormente, sabe me dizer o que poderia estar causando isso? Obrigado.

                          #45437
                          Denny Ceccon
                          Moderador

                            O nome do parâmetro da função criarRede precisa ser igual ao do dicionário parametros, então é só deixar igual em ambos.

                            A demora é porque este tuning está usando 7 parâmetros com 2 opções cada, isso resulta em 2^7 = 128 testes, mas como ainda está usando 5 folds na validação cruzada, são 128 x 5 = 640 testes. É de se esperar que demore mesmo. Por isso, às vezes nós fazemos um tuning menor, com menos parâmetros, e vamos adicionando um parâmetro novo por vez.

                            #45442
                            Samuel Mendes
                            Participante

                              Boa noite Denny, sensacional! Agora faz sentido, eu vou salvar os parametros atuais primeiro como um backup e vou rodando testes adicionaod pouco a pouco, mas deu pra entender certinho, muito obrigado Denny!

                              #45444
                              Denny Ceccon
                              Moderador

                                À disposição!

                              Visualizando 14 posts - 1 até 14 (de 14 do total)
                              • Você deve fazer login para responder a este tópico.