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_outputtensor([[ 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
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étodoforward
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ónlinear
toma tres argumentos:input
,weight
ybias
. El error indica que el argumentoinput
debe ser unTensor
, no unstr
. Esto significa que el argumentoinput
no se está pasando correctamente.