Home › Fóruns › Fórum Processamento de Linguagem Natural com Deep Learning › Estou obtendo um erro ao montar ao instanciar a classe da rede neural
Marcado: Treinamento da rede neural
- Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 4 anos atrás por Jones Granatyr.
- AutorPosts
- 19 de novembro de 2020 às 20:31 #22220
Olá, pessoal
Estou fazendo uma rede neural com 3 classes e meu código travou. Tá aparecendo ‘TypeError: __init__() missing 1 required positional argument: ‘output_dim’. Não consegui achar isso na documentação. Segui o código do Jones, exceto pelas duas classes (já que uso três). Não consigo entender o que seria isso! Poderiam me ajudar? O link da célula no colab é (tb mando meu código logo abaixo). Obrigado.
class DCNN(tf.keras.Model):
def __init__(self,
vocab_size,
emb_dim= 128,
nb_filters = 50,
ffn_units=512,
nb_classes = 3,
dropout_rate = 0.1,
training = False,
name = ‘dcnn’):
super(DCNN, self).__init__(name = name)self.embedding = layers.Embedding(vocab_size, emb_dim = 128)
self.bigram = layers.Conv1D(filters = nb_filters, kernel_size=2,
padding = ‘same’,
activation = ‘relu’)
self.trigram = layers.Conv1D(filters = nb_filters, kernel_size=3,
padding = ‘same’,
activation = ‘relu’)
self.fourgram = layers.Conv1D(filters = nb_filters, kernel_size=4,
padding = ‘same’,
activation = ‘relu’)self.pool = layers.GlobalMaxPool1D()
self.dense_1 = layers.Dense(units = ffn_units, activation= ‘relu’)
self.dropout = layers.Dropout(rate = dropout_rate)
if nb_classes == 2:
self.last_dense = layers.Dense(units = 1, activation= ‘sigmoid’)
else:
self.last_dense = layers.Dense(units = nb_classes, activation= ‘softmax’)def call(self, inputs, training):
x = self.embedding(inputs) #inicio do fluxo da rede neural, embedding
x_1 = self.bigram(x)
x_1 = self.pool(x_1)
x_2 = self.trigram(x)
x_2 = self.pool(x_2)
x_3 = self.fourgram(x)
x_3 = self.pool(x_3)merged = tf.concat([x_1, x_2, x_3], axis = -1) ##concatena o output do pooling
merged = self.dense_1(merged) #liga os dados da concatenação à camada densa
merged = self.dropout(merged, training) #zera porção dos neuronios
output = self.last_dense(merged) #liga camada de drop out nessa camadareturn output
19 de novembro de 2020 às 21:01 #22221Usei os mesmos valores do professor no vídeo pra instanciar o objeto.
vocab_size = tokenizer.vocab_size
emb_dim = 200
nb_filters = 100
ffn_units = 256
nb_classes = len(set(train_labels))
dropout_rate = 0.2
nb_epochs = 10dcnn =DCNN(vocab_size= vocab_size,
emb_dim = emb_dim,
nb_filters = nb_filters,
ffn_units = ffn_units,
nb_classes = nb_classes, dropout_rate = dropout_rate)E obtenho o erro:
TypeError: __init__() missing 1 required positional argument: ‘output_dim’
20 de novembro de 2020 às 14:03 #22223Olá Júnior,
Não consigo analisar seu código, mas pela mensagem de erro parece que essa variável self.last_dense não está sendo criada. Será que ocorreu algum problema no if?
Jones
- AutorPosts
- Você deve fazer login para responder a este tópico.