es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La salida de Bert da una cadena en lugar de un tensor en la función Forward.

Pregunta

class BertModel(nn.Module):
    def <strong>init</strong>(self,pre<em>trained='bert-base-uncased'):
        super().<strong>init</strong>()<br>
        self.bert = AutoModel.from</em>pretrained(pre_trained)
        self.dropout = nn.Dropout(0.1)
        self.relu =  nn.ReLU()
        self.fc1 = nn.Linear(768,512)
        self.fc2 = nn.Linear(512,6)

<pre><code>def forward(self,inputs, mask, labels):

    pooled, cls_hs = self.bert(input_ids=inputs,attention_mask=mask)
    print(pooled)
    print(cls_hs)  
    print(inputs) 
    print(mask)   
    x = self.fc1(cls_hs)
    print(1) 
    x = self.relu(x)
    print(2) 
    x = self.dropout(x)
    print(3) 
  # output layer
    x = self.fc2(x)
    print(4)
  # apply softmax activation
    x = self.softmax(x)
    print(5)
</code></pre>

lasthiddenstate
pooler_output

tensor([[ 101, 2342, 2393, …, 0, 0, 0],
[ 101, 14477, 4779, …, 4839, 6513, 102],
[ 101, 14777, 2111, …, 13677, 3613, 102],
…,
[ 101, 2113, 14047, …, 0, 0, 0],
[ 101, 5683, 3008, …, 0, 0, 0],
[ 101, 19046, 2075, …, 2050, 3308, 102]])
tensor([[1, 1, 1, …, 0, 0, 0],
[1, 1, 1, …, 1, 1, 1],
[1, 1, 1, …, 1, 1, 1],
…,
[1, 1, 1, …, 0, 0, 0],
[1, 1, 1, …, 0, 0, 0],
[1, 1, 1, …, 1, 1, 1]])

en linear (entrada, peso, sesgo)
si tiene la función variádica de PyTorch (entrada, peso, sesgo):
volver manejar la función de PyTorch (lineal, (entrada, peso, sesgo), entrada, peso,
sesgo=sesgo)
volver torch.C._nn.linear(entrada, peso, sesgo)

Tipo de Error: linear(): el argumento ‘entrada’ (posición 1) debe ser Tensor, no str

pooled, clshs impreso como string de últimahiddenstate, pooleroutput tensor
sin ningún tensor

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El fragmento de código intenta crear una clase BertModel que es una subclase de nn.Module. El método __init__ inicializa el modelo con un modelo BERT pre-entrenado y agrega una capa de dropout, una capa de activación ReLU y dos capas lineales. El método forward toma entradas, máscara y etiquetas y devuelve la salida del modelo.

    Sin embargo, el fragmento de código tiene un error en el método forward. La función linear toma tres argumentos: input, weight ybias. El error indica que el argumento input debe ser un Tensor, no un str. Esto significa que el argumento input no se está pasando correctamente.

Comments are closed.