Home › Fóruns › Fórum Processamento de Linguagem Natural com Deep Learning › Problema aleatório no Treinamento da rede neural
- Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 3 anos, 10 meses atrás por
Fábio Spak.
- AutorPosts
- 30 de março de 2021 às 23:44 #28201
Boa noite turma, fui orientado a postar aqui meu erro e como eh meu primeiro post, jah peço desculpas por algum erro, seguinte estou tendo alguns problemas para repetir os passos da aula com uma base de dados minha de 1000 registros.
primeiro problema: Tokenização
tokenizer = tfds.features.text.SubwordTextEncoder.build_from_corpus(data_clean, target_vocab_size=2**16)
<p style=”padding-left: 40px;”>—————————————————————————</p>
<p style=”padding-left: 40px;”>AttributeError Traceback (most recent call last)</p>
<p style=”padding-left: 40px;”><ipython-input-97-fe5075cf79f3> in <module>()
—-> 1 tokenizer = tfds.features.text.SubwordTextEncoder.build_from_corpus(data_clean, target_vocab_size=2**16)</p>
<p style=”padding-left: 40px;”>
AttributeError: module ‘tensorflow_datasets.core.features’ has no attribute ‘text'</p>pesquisando no google vi alguns posts que falavam que esse método estava depreciado,
então pesquisando um pouco mais consegui contornar com esses passos:vocab_fname =’vocab_fname’
# Build
tokenizer = tfds.deprecated.text.SubwordTextEncoder.build_from_corpus( data_clean, target_vocab_size=2**15)
tokenizer.save_to_file(vocab_fname)# Load
encoder = tfds.deprecated.text.SubwordTextEncoder.load_from_file(vocab_fname)tokenizer.vocab_size
<p style=”padding-left: 40px;”>298</p>
data_inputs = [tokenizer.encode(sentence) for sentence in data_clean]for _ in range(10):
print(data_inputs[random.randint(0, len(data_inputs) – 1)])
<p style=”padding-left: 40px;”>[4, 1, 10, 5, 6, 1, 22, 3, 23, 2, 9, 1, 20, 3, 24, 2, 1, 14] [4, 1, 33] [4, 1, 10, 5, 6, 1, 12, 15] [4, 1, 10, 5, 6, 1, 20, 3, 25, 2, 9, 1, 23, 2, 1, 7, 3, 18, 3, 23, 2, 1, 8] [4, 1, 7, 5, 6, 1, 16, 3, 29, 2, 9, 1, 17, 2, 1, 7, 3, 35, 2, 1, 8] [4, 1, 7, 5, 6, 1, 26, 3, 19, 2, 3, 37, 2, 1, 8] [4, 1, 7, 5, 6, 1, 30, 3, 17, 2, 9, 1, 19, 2, 1, 14] [4, 1, 33] [4, 1, 10, 5, 6, 1, 12, 15] [4, 1, 10, 5, 6, 1, 16, 3, 17, 2, 9, 1, 11, 3, 19, 2, 1, 14]</p>
Como pode ver deu certo e segui os demais passos:
Padding
Divisão da base de dados em treinamento e teste
Etapa 3: Construção do modelo
Etapa 4: Treinamento
Configuração dos parâmetros
Treinamentoo segundo problema aconteceu no Treinamento
history = Dcnn.fit(train_inputs, train_labels,
batch_size = batch_size,
epochs = nb_epochs,
verbose = 1,
validation_split = 0.10)<p style=”padding-left: 40px;”>Epoch 1/100</p>
<p style=”padding-left: 40px;”>—————————————————————————</p>
<p style=”padding-left: 40px;”>ValueError Traceback (most recent call last)</p>
<p style=”padding-left: 40px;”><ipython-input-96-2de532de76ee> in <module>()
3 epochs = nb_epochs,
4 verbose = 1,
—-> 5 validation_split = 0.10)
6 ckpt_manager.save()</p>
<p style=”padding-left: 40px;”>9 frames
/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
975 except Exception as e: # pylint:disable=broad-except
976 if hasattr(e, “ag_error_metadata”):
–> 977 raise e.ag_error_metadata.to_exception(e)
978 else:
979 raise</p>
<p style=”padding-left: 40px;”>
ValueError: in user code:</p>
<p style=”padding-left: 40px;”>/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:805 train_function *
return step_function(self, iterator)
<ipython-input-4-c9bcea253a55>:32 call *
x = self.embedding(inputs)</p>
<p style=”padding-left: 40px;”>… segue a pilha de programas e o ultimo eh esse dai e o erro…
</p>
<p style=”padding-left: 40px;”>/usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/ops.py:1217 set_shape (self.shape, shape))</p>
<p style=”padding-left: 40px;”>ValueError: Tensor’s shape (296, 200) is not compatible with supplied shape (298, 200)</p>
esse eu não consegui resolver…o que percebi eh que meu vocab_size ficou exatamente esse valor “supplied shape (298, 200)”
Daí eu imagino que este segundo erro pode ser consequência da minha resolução do primeiro erro, o que vocês acham?
Outra informação que possa ser relevante é que minha base de dados o campo “sentiment” está em português, mas tratei de não deixar acentuada, fiz todos os passos da limpeza.
Esse erro ocorre a partir da segunda chamada, pois todo o procedimento de treinamento está no scopo de um “while”
se puderem me dar alguma dica.
desde já, gratidão
5 de abril de 2021 às 21:57 #28241Boa noite Gledston, você esta utilizando o código fonte/base de dados disponibilizado na vídeo aula?
Fabio
10 de abril de 2021 às 00:57 #28278Fabio, boa noite
kra não estou, na verdade eu peguei algumas partes e estou tentando fazer, até pra ver se consegui entender a ideia, mas deixa eu te falar, acabou que consegui resolver o problema, na verdade era um erro da minha parte.
de tanto acontecer uma vez ou outra, pois como eu disse não era sempre que ocorria, eu consegui identificar um padrão no erro e vi que era toda vez que minha base mudava, ou seja que entrava dados novos.
deixa eu explica melhor, eu fiz um código que aprende a melhorar o treinamento, misturei um pouco de aprendizado por reforço na parte do treinamento.
com isso esqueci de atualizar alguns parâmetros, dentre eles o da Tokenização ai por consequência o “tokenizer.vocab_size” ficava diferente do treinamento anterior causando o erro e me induzindo a achar que era por conta da Tokenização.
ajustei o parâmetro e nunca mais teve o erro.
gratidão pela atenção
10 de abril de 2021 às 17:48 #28283Olá Gledston, que bom que deu certo 😉
Fabio
- AutorPosts
- Você deve fazer login para responder a este tópico.