Home › Forums › Fórum Processamento de Linguagem Natural com Deep Learning › Estou obtendo um erro ao montar ao instanciar a classe da rede neural
Tagged: Treinamento da rede neural
- This topic has 2 replies, 2 voices, and was last updated 4 years, 11 months ago by Jones Granatyr. 
- AuthorPosts
- 19 de novembro de 2020 at 20:31 #22220Olá, 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 at 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 at 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 
- AuthorPosts
- You must be logged in to reply to this topic.