2015-08-05 11 views
5

Come posso modificare il parametro del risolutore in Caffe tramite pycaffe?Modifica dei parametri del solver in Caffe tramite pycaffe

E.g. subito dopo aver chiamato solver = caffe.get_solver(solver_prototxt_filename) vorrei modificare i parametri del risolutore (velocità di apprendimento, scalabilità, gamma, quantità di moto, base_lr, potenza, ecc.), senza dover modificare solver_prototxt_filename.

risposta

3

Forse è possibile creare un file temporaneo.

Prima di tutto, caricare i parametri del Risolutore con

from caffe.proto import caffe_pb2 
from google.protobuf import text_format 
solver_config = caffe_pb2.SolverParameter() 
with open('/your/solver/path') as f: 
    text_format.Merge(str(f.read()), solver_config) 

È possibile modificare qualsiasi parametro risolutore sufficiente impostare il valore desiderato in solver_config (ad esempio solver_config.test_interval = 15). Quindi, è sufficiente creare un file temporaneo e caricare il risolutore da esso:

new_solver_config = text_format.MessageToString(solver_config) 
with open('temp.prototxt', 'w') as f: 
    f.write(new_solver_config) 
solver = caffe.get_solver('temp.prototxt') 
solver.step(1) 
+0

Come modificare i parametri ripetuti, ad es. _stepvalue_ in 'solver_config' allora? Quando provo ad assegnare 'solver_config.stepvalue = 1000' ho ottenuto ** AttributeError: Assegnazione non consentita al campo ripetuto" stepvalue "nell'oggetto messaggio protocollo. ** –

+0

@TuBui cuz non stai usando la politica 'multistep'. – Microos

Problemi correlati