# Instantiate the model w/ hyperparams
weights_matrix = weights_matrix
output_size = 13 # number of classes to predict
hidden_dim = 64
drop_prob = 0.5
# The RNN model that will be used to perform classification
class AttentionLSTM(nn.Module):
def __init__(self, weights_matrix, output_size, hidden_dim, drop_prob):
super(AttentionLSTM, self).__init__()
# embedding layers
self.embedding, self.num_embeddings, self.embeddings_size = create_emb_layer(weights_matrix, True)
# embedding dropout
self.dropout = nn.Dropout2d(drop_prob)
# First lstm and GRU layers
self.lstm1 = nn.LSTM(self.embeddings_size, hidden_dim, batch_first=True, bidirectional=True)
self.gru1 = nn.GRU(hidden_dim * 2, hidden_dim, bidirectional=True, batch_first=True)
# attention layer
self.attention = Attention(hidden_dim*2, seq_length)
# Second lstm and GRU layers
self.lstm2 = nn.LSTM(hidden_dim * 2, hidden_dim, batch_first=True, bidirectional=True)
self.gru2 = nn.GRU(hidden_dim * 2, hidden_dim, bidirectional=True, batch_first=True)
# linear
self.fc = nn.Linear(hidden_dim * 2, hidden_dim * 2)
self.out = nn.Linear(hidden_dim * 2, output_size)
# activation functions
self.sigmoid = nn.Sigmoid() # for hidden layers
self.softmax = nn.Softmax(dim=1) # for output layer
def forward(self, x):
batch_size = x.size(0)
# embedding output
x = x.long()
embeds = self.embedding(x)
embeds = torch.squeeze(torch.unsqueeze(embeds, 0))
# lstm, and gru outputs
lstm_out1, _ = self.lstm1(embeds)
gru_out1, _ = self.gru1(lstm_out1)
gru_out1 = gru_out1.view(batch_size, -1, hidden_dim * 2)
attention_out = self.attention(gru_out1, seq_length)
attention_out = attention_out.view(batch_size, -1, hidden_dim * 2)
attention_out = self.sigmoid(attention_out)
lstm_out2, _ = self.lstm2(attention_out)
# slice lstm_out to just get output of last element of the input sequence
lstm_out2 = lstm_out2[:, -1]
gru_out2, _ = self.gru2(lstm_out2)
# linear outputs
fc_out = self.softmax(self.fc(gru_out2))
final_out = self.out(fc_out)
return final_out
Ich bin sicher, dass mein Datensatz nach dem Vorverarbeitungsschritt ausgeglichen ist, aber mein Modell sagt immer die gleiche Ausgabe voraus. Präzision und fscore ändern sich für jede Eingabe. Dieses Problem führt jedoch dazu, dass mein Erinnerungswert 1,0 beträgt, da die Ausgabe unabhängig von der Eingabe immer gleich ist.
if mask is not None: a = a * mask a = a / (torch.sum(a, 1, keepdim=True) + 1e-10) weighted_input = x * torch.unsqueeze(a, -1) return torch.sum(weighted_input, 1) [/code] Dies ist RNN-Code: [code]# Instantiate the model w/ hyperparams weights_matrix = weights_matrix output_size = 13 # number of classes to predict hidden_dim = 64 drop_prob = 0.5 # The RNN model that will be used to perform classification class AttentionLSTM(nn.Module): def __init__(self, weights_matrix, output_size, hidden_dim, drop_prob): super(AttentionLSTM, self).__init__()
# lstm, and gru outputs lstm_out1, _ = self.lstm1(embeds) gru_out1, _ = self.gru1(lstm_out1) gru_out1 = gru_out1.view(batch_size, -1, hidden_dim * 2) attention_out = self.attention(gru_out1, seq_length) attention_out = attention_out.view(batch_size, -1, hidden_dim * 2) attention_out = self.sigmoid(attention_out) lstm_out2, _ = self.lstm2(attention_out) # slice lstm_out to just get output of last element of the input sequence lstm_out2 = lstm_out2[:, -1] gru_out2, _ = self.gru2(lstm_out2) # linear outputs fc_out = self.softmax(self.fc(gru_out2)) final_out = self.out(fc_out) return final_out [/code] Ich bin sicher, dass mein Datensatz nach dem Vorverarbeitungsschritt ausgeglichen ist, aber mein Modell sagt immer die gleiche Ausgabe voraus. Präzision und fscore ändern sich für jede Eingabe. Dieses [url=viewtopic.php?t=26065]Problem[/url] führt jedoch dazu, dass mein Erinnerungswert 1,0 beträgt, da die Ausgabe unabhängig von der Eingabe immer gleich ist.
Ich habe eine Recycler -Ansicht erstellt und sein Layout wird mit gestaffeltem Netzlayout verwaltet. Aber das Ergebnis ist nicht ausgeglichen, jemand kann helfen? val manager =...
Ich verwende Prisma Client Python zusammen mit SQLite, um eine Datenbank für mein Programm zu erstellen. Ich habe alles richtig installiert, NPM, Node.js, Prisma -Client, Prisma cli ... und ich habe...
Ich muss die Anwesenheit und den Fortschritt über 6 Monate hinweg verfolgen, ich muss monatliche Besprechungen planen, um mit den Kunden in Kontakt zu treten, ich arbeite Teilzeit von Montag bis...
Ich erstelle ein Django/DRF-Backend und erhalte immer wieder diese Fehlermeldung, wenn ich versuche, einen Superuser in cli:
zu erstellen psycopg2.errors.UniqueViolation: duplicate key value violates...