Forum Replies Created
- AuthorPosts
Olá Micael,
Você pode primeiro fazer uma pequena modificação na função
get_predictions, para retornar o valor ao invés de exibi-lo na tela:def get_prediction(sentence): tokens = encode_sentence(sentence) inputs = tf.expand_dims(tokens, 0) # (batch_size) (1,...) output = Dcnn(inputs, training=False) sentiment = math.floor(output*2) if sentiment == 0: return 'negative' elif sentiment == 1: return 'positive'
Agora, pode organizar suas frases em um dataframe e adicionar o resultado desta forma:
texts = ["This movie was pretty interesting", "I'd rather not do that again", "What a great time to be alive", "I wish this never happened"] df = pd.DataFrame({'text': texts}) df['emotion'] = df['text'].map(get_prediction) print(df) <out> text emotion -------------------------------------------- 0 This movie was pretty interesting positive 1 I'd rather not do that again negative 2 What a great time to be alive positive 3 I wish this never happened negative- This reply was modified 4 years, 1 month ago by
Denny Ceccon.
Olá Henrique,
O warning diz que seu gerador ficou sem dados. Como ele parou no batch 126, eu acho mais provável que sua pasta com os arquivos de treinamento esteja incompleta. Veja se ela contém todos os arquivos demonstrados na aula.
Olá Henrique,
Esse é o número do batch. O número total de batches é definido pelo tamanho do dataset (número de instâncias), que no caso é igual a
len(previsores), dividido pelobatch_size. Como o tamanho do dataset é fixo durante uma tarefa de validação cruzada, você pode alterá-lo mudando o batch_size.18 de março de 2022 at 14:35 in reply to: Classificação de cinco saídas e não duas conforme modelo da aula #33803Olá Aislan,
Basta utilizar
NB_CLASSES = 5, conforme aula Treinamento do Modelo @1:22.Felix, é que o BERT trabalha com uma estratégia de tokenização chamada subwords, onde as palavras são quebradas nos n-gramas de letras mais frequentes. Adicione a isso o fato de que o modelo multilíngua foi treinado com várias línguas, e o resultado é que muitos tokens não farão sentido gramatical, mas computacionalmente eles são úteis. O importante não é que a tokenização “faça sentido”, mas que sirva para a finalidade do algoritmo.
Existem modelos treinados em outras línguas, mas são soluções de outros grupos, não oficiais do Google. Algumas, inclusive, você consegue importar do próprio hub do Tensorflow, o que facilita a adaptação do código da aula. Não temos como oferecer suporte neste caso, mas você está livre para testá-las por conta própria.
Olá Felix,
Nesse caso, você deve salvar o atributo
historydo objetohistorycom:import joblib joblib.dump(history.history, 'history.joblib')
E depois restaurar com:
history = joblib.load('history.joblib')Observe entretanto que não é possível salvar o objeto
historyinteiro, apenas o atributohistorydele, que contém as métricas.Olá Felix,
1) Você pode recuperar
y_testa partir dotest_dataset. Como cada iteração dotest_datasetretorna um batch de (X, y), nós podemos acumular todos os batches deyem uma lista, e depois transformá-la em um numpy array.y_true = [] for X, y in test_dataset: y_true.append(y.numpy()) y_true = np.concatenate(y_true)
Para
y_pred, basta usar o modelo no modo de predição:y_pred = Dcnn.predict(test_dataset) y_pred = y_pred.reshape(-1)
Agora, se você inspecionar
y_testey_pred, vai ver que o primeiro contém 0 e 1, e o segundo contém valores reais no intervalo entre 0 e 1. Isso porquey_predretorna a probabilidade de o tweet ser da classe 1. Para converter em 0 e 1, basta fazery_pred = y_pred > 0.5, ou seja, se a probabilidade retornada pelo modelo for maior que 50%, a resposta final será 1, caso contrário será 0.Aí você pode usar as duas variáveis com as funções que citou.
2) Foi sim, na aula Criação da base de dados por volta de @14:00. O professor usou o dataset de teste na parte de avaliação do modelo.
Olá Felix,
Você deve usar somente
ckpt.restore(ckpt_manager.latest_checkpoint), isso depois de instanciar os objetosckpt,ckpt_manager, a classeDCNNe o objetoDcnninstanciado dela, da mesma forma que feitos na aula, se estiver em uma nova sessão. Esta função não retorna nada, por isso seu objetohistoryestá vazio. Depois da restauração, o objetoDcnn, que corresponde ao modelo, terá os pesos provenientes do arquivo salvo durante o treinamento.- This reply was modified 4 years, 2 months ago by
Denny Ceccon.
Olá Alisson,
Você pode dizer a qual aula se refere?
Olá Vitória,
Pela mensagem de erro, parece que você passou o parâmetro
min_sample_leftna sua variávelparametros, que é inválida paraRandomForestClassifier. Dê uma verificada.2 de fevereiro de 2022 at 11:52 in reply to: Versão torch 0.3.1 não está mais disponível pra Linux #33049Olá,
Por enquanto, pode tentar usar a versão 1.0. As atualizações costumam ser um pouco trabalhosas, então não temos como prometer isto no curto prazo. Se tiver algum problema com a v1.0, nos avise ao longo do curso que vamos verificando pontualmente.
Olá,
Geralmente o processo de transferência de aprendizagem se comporta bem quando utilizamos dados da mesma natureza, como é o caso que você sugere. Entretanto, um modelo só vai conseguir prever novas classes se ele passar pelo fine tuning, ou seja, devemos treinar o topo do modelo (a parte classificatória) com novos dados rotulados. Aliás, é exatamente isso que fazemos na Parte 6 do curso. Sem o fine-tuning, o modelo sequer tem como representar uma nova classe na camada de saída, e por isso ele vai tentar encaixar novas categorias com base nas categorias já existentes, com resultados ineficientes.
14 de janeiro de 2022 at 10:52 in reply to: Projeto #3: Breast cancer com tunning, gernado um IndexError #32915Olá,
Este erro é relacionado à última versão do Skorch, agora o arquivo Colab já está atualizado, obrigado por nos avisar.
13 de janeiro de 2022 at 15:03 in reply to: Atualização na classe da rede neural Projeto – 2: BreastCancer #32905Olá,
Esta atualização foi feita para que o modelo possa ser processado pela biblioteca Skorch, que não aceita que a saída da rede seja o resultado de uma ativação, mas sim exige que seja o resultado bruto. Neste caso, a função de custo fica responsável por fazer a ativação correspondente.
Olá Morandin,
As redes recorrentes tradicionais só fazem a predição para um timestep no futuro, e para períodos mais adiante é preciso realimentar as previsões anteriores, como você está fazendo, mas isso de fato tende a aumentar o erro exponencialmente. Talvez existam outras implementações mais recentes ou modificações das redes recorrentes para levar isso em consideração, mas eu desconheço.
- This reply was modified 4 years, 1 month ago by
- AuthorPosts
