Theano continue training
When pickling models, it is always better to save the parameters and when loading re-create the shared variable and rebuild the graph out of this. This allow to swap the device between CPU and GPU.
But you can pickle Theano functions. If you do that, pickle all associated function at the same time. Otherwise, they will have each of them a different copy of the shared variable. Each call to load() will create new shared variable if they where pickled. This is a limitation of pickle.
I am looking for some suggestions about how to do continue training in theano. For example, I have the following:

classifier = my_classifier()

cost = ()
updates = []
train_model = theano.function(...)
eval_model = theano.function(...)

best_accuracy = 0
while (epoch < n_epochs):

    train_model()

    current_accuracy = eval_model()
    if current_accuracy > best_accuracy:
        save classifier or save theano functions?
        best_accuracy = current_accuracy
    else:
        load saved classifier or save theano functions?
        if we saved classifier previously, do we need to redefine train_model and eval_model functions?

    epoch+=1

#training is finished
save classifier

I want to save the current trained model if it has higher accuracy than previously trained models, and load the saved model later if the current trained model accuracy is lower than the best accuracy. 
My questions are:
When saving, should I save the classifier, or theano functions? 
If the classifier needs to be saved, do I need to redefine theano functions when loading it, since classifier is changed. 
Thanks,