فائدة بيثون لإعادة تحميل جسم حلقة من المصدر على كل تكرار دون فقدان الحالة
مفيد لتحرير التعليمات البرمجية المصدر أثناء تدريب نماذج التعلم العميق. يتيح لك ذلك إضافة تسجيل الإحصاءات أو طباعة الإحصائيات أو حفظ النموذج دون إعادة تشغيل التدريب ، وبالتالي ، دون فقدان تقدم التدريب.

pip install reloading
لإعادة تحميل جسم for من المصدر قبل كل تكرار ، ما عليك سوى لف التكرار بإعادة reloading ، على سبيل المثال
from reloading import reloading
for i in reloading ( range ( 10 )):
# this code will be reloaded before each iteration
print ( i ) لإعادة تحميل وظيفة من المصدر قبل كل تنفيذ ، قم بتزيين تعريف الوظيفة باستخدام @reloading ، على سبيل المثال
from reloading import reloading
@ reloading
def some_function ():
# this code will be reloaded before each invocation
pass تمرير وسيطة الكلمة الرئيسية every إعادة تحميل فقط على كل الاحتجاج أو التكرار. على سبيل المثال
for i in reloading ( range ( 1000 ), every = 10 ):
# this code will only be reloaded before every 10th iteration
# this can help to speed-up tight loops
pass
@ reloading ( every = 10 )
def some_function ():
# this code with only be reloaded before every 10th invocation
pass تمرير forever=True بدلاً من أن يكون ذلك لا يطاق لإنشاء حلقة إعادة تحميل لا نهاية لها ، على سبيل المثال
for i in reloading ( forever = True ):
# this code will loop forever and reload from source before each iteration
pass فيما يلي المقتطفات القصيرة لكيفية استخدام إعادة التحميل مع مكتبتك المفضلة. للحصول على أمثلة كاملة ، تحقق من مجلد الأمثلة.
for epoch in reloading ( range ( NB_EPOCHS )):
# the code inside this outer loop will be reloaded before each epoch
for images , targets in dataloader :
optimiser . zero_grad ()
predictions = model ( images )
loss = F . cross_entropy ( predictions , targets )
loss . backward ()
optimiser . step ()هنا مثال Pytorch الكامل.
@ reloading
def update_learner ( learner ):
# this function will be reloaded from source before each epoch so that you
# can make changes to the learner while the training is running
pass
class LearnerUpdater ( LearnerCallback ):
def on_epoch_begin ( self , ** kwargs ):
update_learner ( self . learn )
path = untar_data ( URLs . MNIST_SAMPLE )
data = ImageDataBunch . from_folder ( path )
learn = cnn_learner ( data , models . resnet18 , metrics = accuracy ,
callback_fns = [ LearnerUpdater ])
learn . fit ( 10 )هنا مثال Fastai الكامل.
@ reloading
def update_model ( model ):
# this function will be reloaded from source before each epoch so that you
# can make changes to the model while the training is running using
# K.set_value()
pass
class ModelUpdater ( Callback ):
def on_epoch_begin ( self , epoch , logs = None ):
update_model ( self . model )
model = Sequential ()
model . add ( Dense ( 64 , activation = 'relu' , input_dim = 20 ))
model . add ( Dense ( 10 , activation = 'softmax' ))
sgd = SGD ( lr = 0.01 , decay = 1e-6 , momentum = 0.9 , nesterov = True )
model . compile ( loss = 'categorical_crossentropy' ,
optimizer = sgd ,
metrics = [ 'accuracy' ])
model . fit ( x_train , y_train ,
epochs = 200 ,
batch_size = 128 ,
callbacks = [ ModelUpdater ()])هنا مثال كيراس الكامل.
for epoch in reloading ( range ( NB_EPOCHS )):
# the code inside this outer loop will be reloaded from source
# before each epoch so that you can change it during training
train_loss . reset_states ()
train_accuracy . reset_states ()
test_loss . reset_states ()
test_accuracy . reset_states ()
for images , labels in tqdm ( train_ds ):
train_step ( images , labels )
for test_images , test_labels in tqdm ( test_ds ):
test_step ( test_images , test_labels )هنا مثال كامل Tensorflow.
تأكد من وجود python و python3 في طريقك ، ثم قم بتشغيله:
$ python3 reloading/test_reloading.py