def autosave(self, mode): if "interval" in mode: #if 0 == (self.current_epoch + 1) % self.save_interval: if 0 == self.current_epoch % self.save_interval: save_path = self.save_path + "/" + self.model.name + "-epoch-" + str(self.current_epoch) + ".pkl" VideoModel.save(self.model, save_path) logger.info("....Saving to " + os.path.abspath(save_path)) if "best" in mode: if self.current_validation_error < self.best_validation_error: save_path = self.save_path + "/" + self.model.name + "-validation-best.pkl" VideoModel.save(self.model, save_path) logger.info("....Saving to " + os.path.abspath(save_path)) if "final" in mode: if self.current_epoch == self.max_epoch: save_path = self.save_path + "/" + self.model.name + "-epoch-" + str(self.current_epoch) + ".pkl" VideoModel.save(self.model, save_path) logger.info("....Saving to " + os.path.abspath(save_path))
outputs = [{"name": "probability", "value": middle_layers[4].output}] # error_layers = [cost_layer] ############################# model param = { 'interface_layer': interface_layer, 'middle_layers': middle_layers, 'cost_layer': cost_layer, 'outputs': outputs, 'errors': None, 'last_n': seq_length, 'name': "UCF101-VideoModel-Flow-LSTM-RMS", 'problem_type': "classification" } model = VideoModel(param) model.print_stat() ############################# optimizer param = { 'id': '1', 'learning_rate': 0.001, 'decay_rate': 0.9, 'clip_threshold': None, 'verbose': False, 'max_epoch': 200, 'start_epoch': 0, 'valid_epoch': 20, 'max_epochs_no_best': 200, 'display_freq': 150, 'valid_freq': None,
import random import numpy # In[2]: ############################# model config src1_model_file = "../ucf101-experiment/ucf101-flow-convLSTM/rms-lr-0.001-drop-0.7/UCF101-VideoModel-Flow-convLSTM-RMS-validation-best.pkl" src2_model_file = "../ucf101-experiment/ucf101-rgb-convALSTM/rms-lr-0.001-drop-0.7/UCF101-VideoModel-RGB-convALSTM-RMS-validation-best.pkl" dst_model_file = "../ucf101-experiment/ucf101-rgb-motion-convALSTM/rms-lr-0.001-drop-0.7/UCF101-VideoModel-RGB-Motion-convALSTM-RMS-validation-best.pkl" save_model_file = "../ucf101-experiment/ucf101-rgb-motion-convALSTM/rms-lr-0.001-drop-0.7/UCF101-VideoModel-RGB-Motion-convALSTM-RMS-initialization.pkl" log_path = "model_assemble_ucf101_rgb_motion_convALSTM.log" sparnn.utils.quick_logging_config(log_path) ############################# load model src1_model = VideoModel.load(src1_model_file) src1_model.print_stat() src2_model = VideoModel.load(src2_model_file) src2_model.print_stat() dst_model = VideoModel.load(dst_model_file) dst_model.print_stat() # In[3]: ############################# model assemble #copy_layers = range(len(src_model.middle_layers) -1 -1) #for ii in copy_layers: # if len(src_model.middle_layers[ii].param)>0 and len(dst_model.middle_layers[ii].param)>0: # for src_param, dst_param in zip(src_model.middle_layers[ii].param, dst_model.middle_layers[ii].param):
'output_data_type': 'int64', 'one_hot_label': True, 'is_output_multilabel': False, 'name': 'ucf101-valid-video-ts-iterator'} valid_iterator = VideoDataTsIterator(iterator_param) valid_iterator.begin(do_shuffle=False) valid_iterator.print_stat() # test_iterator = None ############################# rng = sparnn.utils.quick_npy_rng() theano_rng = sparnn.utils.quick_theano_rng(rng) ############################# load model model_file = load_path + "UCF101-VideoModel-RGB-Motion-convALSTM-RMS-initialization.pkl" model = VideoModel.load(model_file) model.print_stat() ############################# optimizer param = {'id': '1', 'learning_rate': 0.001, 'momentum': 0.9, 'decay_rate': 0.9, 'clip_threshold': None, 'verbose': False, 'max_epoch': 400, 'start_epoch': 0, 'valid_epoch': 10, 'max_epochs_no_best': 400, 'decay_step': 400, 'display_freq': 150, 'valid_freq': None, 'save_freq': None, 'autosave_mode': ['interval', 'best'], 'save_path': save_path, 'save_interval': 10} optimizer = RMSProp(model, train_iterator, valid_iterator, test_iterator, param) #param = {'id': '1', 'learning_rate': 0.001, 'momentum': 0.9, 'decay_rate': 0.1, 'clip_threshold': 50, 'verbose': False, # 'max_epoch': 300, 'start_epoch': 0, 'valid_epoch': 20, 'max_epochs_no_best': 300, 'decay_step': 100, # 'display_freq': 150, 'valid_freq': None, 'save_freq': None, # 'autosave_mode': ['interval', 'best'], 'save_path': save_path, 'save_interval': 20} #optimizer = SGD(model, train_iterator, valid_iterator, test_iterator, param) optimizer.train()