Forum Replies Created
- AuthorPosts
Olá Henrique,
Isso ocorre na linha 39 você usa somente uma variável (índice
0
) para descrever cada timestep do dataset de treinamento, mas seuX_teste
(linha 93) é construído com 6 variáveis. Mudando0:6
para0
deve resolver o problema.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 3 years 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 March 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
history
do objetohistory
com: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
history
inteiro, apenas o atributohistory
dele, que contém as métricas.Olá Felix,
1) Você pode recuperar
y_test
a partir dotest_dataset
. Como cada iteração dotest_dataset
retorna um batch de (X, y), nós podemos acumular todos os batches dey
em 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_test
ey_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_pred
retorna 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 classeDCNN
e o objetoDcnn
instanciado 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 objetohistory
está 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 3 years, 1 month 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_left
na sua variávelparametros
, que é inválida paraRandomForestClassifier
. Dê uma verificada.2 de February 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 January 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 January 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.
- This reply was modified 3 years ago by
- AuthorPosts