Utilitas python untuk memuat ulang badan loop dari sumber pada setiap iterasi tanpa kehilangan keadaan
Berguna untuk mengedit kode sumber selama pelatihan model pembelajaran yang mendalam. Ini memungkinkan Anda EG menambahkan logging, mencetak statistik atau menyimpan model tanpa memulai kembali pelatihan dan, oleh karena itu, tanpa kehilangan kemajuan pelatihan.

pip install reloading
Untuk memuat ulang tubuh for loop dari sumber sebelum setiap iterasi, cukup bungkus iterator dengan reloading , misalnya
from reloading import reloading
for i in reloading ( range ( 10 )):
# this code will be reloaded before each iteration
print ( i ) Untuk memuat ulang fungsi dari sumber sebelum setiap eksekusi, hias definisi fungsi dengan @reloading , misalnya
from reloading import reloading
@ reloading
def some_function ():
# this code will be reloaded before each invocation
pass Lulus argumen kata kunci every untuk memuat ulang hanya pada setiap doa atau iterasi ke-n. Misalnya
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 Lulus forever=True bukannya iterable untuk membuat loop reload tanpa akhir, misalnya
for i in reloading ( forever = True ):
# this code will loop forever and reload from source before each iteration
pass Berikut adalah cuplikan pendek tentang cara menggunakan pemuatan ulang dengan perpustakaan favorit Anda. Untuk contoh lengkap, lihat folder contoh.
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 ()Berikut adalah contoh Pytorch lengkap.
@ 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 )Berikut adalah contoh fastai lengkap.
@ 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 ()])Berikut adalah contoh keras lengkap.
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 )Berikut ini adalah contoh tensorflow lengkap.
Pastikan Anda memiliki python dan python3 yang tersedia di jalur Anda, lalu jalankan:
$ python3 reloading/test_reloading.py