Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lab1 - word2vec train loss #104

Open
angeloskanatas opened this issue Apr 6, 2023 · 7 comments
Open

Lab1 - word2vec train loss #104

angeloskanatas opened this issue Apr 6, 2023 · 7 comments

Comments

@angeloskanatas
Copy link

Καλησπέρα, όταν εκπαιδεύουμε το word2vec, το loss σε κάθε epoch είναι 0 (χρησιμοποιούμε το δοθέν W2VLossLogger()). Αυτό γιατί μπορεί να συμβαίνει;

@efthymisgeo
Copy link
Contributor

Στείλε μου τι εντολή ετρεξες

@angeloskanatas
Copy link
Author

Κάνω train το μοντέλο με: model.train(sentences, total_examples=len(sentences), epochs=epochs, callbacks=[W2VLossLogger()]), όπου η κλάση W2VLossLogger log-άρει το loss μετά από κάθε epoch με αυτόν τον τρόπο:

class W2VLossLogger(CallbackAny2Vec):
  """
  Callback to print loss after each epoch.
  Use by passing model.train(..., callbacks=[W2VLossLogger()])
  """

  def __init__(self):
    self.epoch = 0

  def on_epoch_end(self, model):
    loss = model.get_latest_training_loss()

    if self.epoch == 0:
      print("Loss after epoch {}: {}".format(self.epoch, loss))
    else:
      print(
        "Loss after epoch {}: {}".format(
          self.epoch, loss - self.loss_previous_step
          )
      )
    self.epoch += 1
    self.loss_previous_step = loss

@efthymisgeo
Copy link
Contributor

Που ορίζεις το μοντέλο;

@angeloskanatas
Copy link
Author

angeloskanatas commented Apr 7, 2023

Έχω συμπληρώσει την συνάρτηση train_w2v_model που έχει δοθεί. Αρχικοποιώ με: model = Word2Vec(sentences, vector_size=embedding_dim, window=window, min_count=min_word_count, workers=workers-1, sg=1, compute_loss=True) # skip-gram model (δεν έστειλα όλο τον κώδικα για να μην σποϊλάρω πιθανώς).

@Con-Hal
Copy link

Con-Hal commented Apr 9, 2023

Εχω και εγώ το ίδιο πρόβλημα με τον συνάδελφο. Κάνω train ως εξής
model.train(
sentences=sentences,
total_examples=len(sentences),
corpus_iterable=sentences,
epochs=epochs,
callbacks=[W2VLossLogger()],

)

Αρχικοποιώ το μοντέλο ως εξής;

model = Word2Vec(
sentences=sentences,
window=window,
workers=workers,
min_count=min_word_count,

)

Αν χρειάζεται να στείλω κάτι άλλο σε κώδικα, μπορείτε να μου πείτε

@angeloskanatas
Copy link
Author

Για όσους δεν έχουν βρει την λύση σε αυτό απλά κάντε: model.train(sentences, total_examples=len(sentences), epochs=epochs, compute_loss=True, callbacks=[W2VLossLogger()]) (δεν χρειάζεται να προσθέσετε τις παραμέτρους compute_loss και callbacks στην αρχικοποίηση του μοντέλου).

@Con-Hal
Copy link

Con-Hal commented Apr 15, 2023

Το να προσθέσω πράγματι compute_loss=True στην model.train το έλυσε για εμένα.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants