Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

205
Views
Cómo registrar val_loss y loss por lote en keras

Estoy usando la función de devolución de llamada en keras para registrar la loss y val_loss por época, pero me gustaría hacer lo mismo pero por lote. Encontré una función de devolución de llamada llamada on_batch_begin(self,batch,log={}) , pero no estoy seguro de cómo usarla.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Aquí hay un ejemplo de devolución de llamada personalizada. Siguiendo y modificando un ejemplo de aquí :

 class LossHistory(keras.callbacks.Callback): def on_train_begin(self, logs={}): self.losses = [] self.val_losses = [] def on_batch_end(self, batch, logs={}): self.losses.append(logs.get('loss')) self.val_losses.append(logs.get('val_loss')) model = Sequential() model.add(Dense(10, input_dim=784, init='uniform')) model.add(Activation('softmax')) model.compile(loss='categorical_crossentropy', optimizer='rmsprop') history = LossHistory() model.fit(X_train, Y_train, batch_size=128, nb_epoch=20, verbose=0, validation_split=0.1, callbacks=[history]) print history.losses # outputs ''' [0.66047596406559383, 0.3547245744908703, ..., 0.25953155204159617, 0.25901699725311789] ''' print history.val_losses
over 4 years ago · Santiago Trujillo Report

0

import numpy as np import matplotlib.pyplot as plt import keras class LossHistory(keras.callbacks.Callback): def on_train_begin(self, logs={}): self.history = {'loss':[],'val_loss':[]} def on_batch_end(self, batch, logs={}): self.history['loss'].append(logs.get('loss')) def on_epoch_end(self, epoch, logs={}): self.history['val_loss'].append(logs.get('val_loss')) history = LossHistory() model = keras.Sequential() model.add(keras.layers.Dense(32, activation='relu', input_dim=100)) model.add(keras.layers.Dense(1, activation='sigmoid')) model.compile(optimizer='rmsprop', loss='binary_crossentropy') # Generate dummy data import numpy as np data = np.random.random((1000, 100)) labels = np.random.randint(2, size=(1000, 1)) # Train the model, iterating on the data in batches of 32 samples model.fit(data, labels, epochs=10, batch_size=32, validation_split=0.2, callbacks=[history]) # Plot the history y1=history.history['loss'] y2=history.history['val_loss'] x1 = np.arange( len(y1)) k=len(y1)/len(y2) x2 = np.arange(k,len(y1)+1,k) fig, ax = plt.subplots() line1, = ax.plot(x1, y1, label='loss') line2, = ax.plot(x2, y2, label='val_loss') plt.show()
over 4 years ago · Santiago Trujillo Report

0

De la documentación de tf.keras parece que on_batch_end no incluye val_loss

on_batch_end: los registros incluyen loss y, opcionalmente, acc (si el monitoreo de precisión está habilitado).

como se menciona aquí: https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/Callback

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!