Пример #1
0
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()