اذهب إلى المحتوى
  • 0

استخدام CSVLogger لتخزين نتائج ال Epochs خلال التدريب في كيراس Keras وتنسرفلو Tensorflow 

عامر ابراهيم

السؤال

Recommended Posts

  • 1

نستخدم CSVLogger callback  للقيام بحفظ نتائج ال Epochs خلال عملية التدريب:

tf.keras.callbacks.CSVLogger(filename, separator=",", append=False)

حيث نمرر له مسار الملف الذي نريد أن يتم حفظ البيانات فيه. والفاصل الذي نريد أن يتم فصل العناصر فيه. أما الوسيط الأخير فنضبطه على True إذا كان الملف موجود مسبقاً ونريد الإضافة عليه (في حالة كان موجود ولم يتم ضبطه على True سيتم الكتابة فوق الملف).  ويمكننا استخدامه أثناء تدريب النماذج بالشكل التالي:

# نقوم بتعريف الكول باكس أولاً
csv_logger = CSVLogger('training.log')
#fit في الدالة  callbacks ثم نمرره إلى الوسيطة 
model.fit(X_train, Y_train, callbacks=[csv_logger])

مثال:

from tensorflow.keras.models import Sequential 
from sklearn.datasets import make_moons 
from tensorflow.keras.layers import Dense
# تعريف بيانات عشوائية 
X, y = make_moons(n_samples=200, noise=0.2, random_state=4) 
# قسم البيانات إلى تدريب واختبار
n_train = 30 
trainX, testX = X[:n_train, :], X[n_train:, :] trainy, testy = y[:n_train], y[n_train:] 
# تعريف نموذج 
model = Sequential()
model.add(Dense(600, input_dim=2, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# تعريف الكولباكس 
from tensorflow.keras.callbacks import CSVLogger
csv_logger = CSVLogger('training.log') 
# تدريب النموذدج 
model.fit(trainX, trainy, validation_data=(testX, testy), epochs=5000, verbose=0, callbacks=[csv_logger])

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

يمكنك استخدام csvlogger وذلك لحفظ نتائج كل epoch على حدة، استخدامها بسيط حيث تعرف الدالة كالتالي:

tf.keras.callbacks.CSVLogger(
    filename, separator=',', append=False
)

واستخدامها بسيط حيث يتم اضافة اسم الملف الذي تريد التحميل فيه ثم وضعها في Model.fit كالتالي:

csv_logger = CSVLogger('example.log')
model.fit(X_train, Y_train, callbacks=[csv_])

المثال التالي يوضح كيفية استخدامها في عملية التدريب:

def train():
    
    data = load_train_data()
    data = data.reshape((data.shape[0],data.shape[1],data.shape[2],1))
    data = data.astype('float32')/255.0
    # model selection
    if args.pretrain:   model = load_model(args.pretrain, compile=False)
    else:   
        if args.model == 'DnCNN': model = models.DnCNN()
    # تشغيل النموذج
    model.compile(optimizer=Adam(), loss=['mse'])
    
    ckpt = ModelCheckpoint(save_dir+'/model_{epoch:02d}.h5', monitor='val_loss', 
                    verbose=0, period=args.save_every)
    csv_logger = CSVLogger(save_dir+'/log.csv', append=True, separator=',')
    lr = LearningRateScheduler(step_decay)
    # التدريب 
    history = model.fit_generator(train_datagen(data, batch_size=args.batch_size),
                    steps_per_epoch=len(data)//args.batch_size, epochs=args.epoch, verbose=1, 
                    callbacks=[ckpt, csv_logger, lr])
    
    return model 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...