cfg_si.init_data_reading(train_data_spec, valid_data_spec) # parse the structure of the i-vector network cfg_adapt = NetworkConfig() net_split = adapt_nnet_spec.split(':') adapt_nnet_spec = '' for n in xrange(len(net_split) - 1): adapt_nnet_spec += net_split[n] + ':' cfg_adapt.parse_config_dnn(arguments, adapt_nnet_spec + '0') numpy_rng = numpy.random.RandomState(89677) theano_rng = RandomStreams(numpy_rng.randint(2**30)) log('> ... initializing the model') # setup up the model dnn = CNN_SAT(numpy_rng=numpy_rng, theano_rng=theano_rng, cfg_si=cfg_si, cfg_adapt=cfg_adapt) # read the initial DNN (the SI DNN which has been well trained) # _file2nnet(dnn.cnn_si.layers, filename = init_model_file) _file2nnet(dnn.cnn_si.layers, filename='BKUP/nnet.param.si') _file2nnet(dnn.dnn_adapt.layers, filename='BKUP/nnet.param.adapt') # get the training and validation functions for adaptation network training dnn.params = dnn.dnn_adapt.params # only update the parameters of the i-vector nnet dnn.delta_params = dnn.dnn_adapt.delta_params log('> ... getting the finetuning functions for iVecNN') train_fn, valid_fn = dnn.build_finetune_functions( (cfg_si.train_x, cfg_si.train_y), (cfg_si.valid_x, cfg_si.valid_y), batch_size=cfg_adapt.batch_size) log('> ... learning the adaptation network')
cfg_si.parse_config_cnn(arguments, '10:' + si_nnet_spec, si_conv_nnet_spec) cfg_si.init_data_reading(train_data_spec, valid_data_spec) # parse the structure of the i-vector network cfg_adapt = NetworkConfig() net_split = adapt_nnet_spec.split(':') adapt_nnet_spec = '' for n in range(len(net_split) - 1): adapt_nnet_spec += net_split[n] + ':' cfg_adapt.parse_config_dnn(arguments, adapt_nnet_spec + '0') numpy_rng = numpy.random.RandomState(89677) theano_rng = RandomStreams(numpy_rng.randint(2 ** 30)) log('> ... initializing the model') # setup up the model dnn = CNN_SAT(numpy_rng=numpy_rng, theano_rng = theano_rng, cfg_si = cfg_si, cfg_adapt = cfg_adapt) # read the initial DNN (the SI DNN which has been well trained) # _file2nnet(dnn.cnn_si.layers, filename = init_model_file) _file2nnet(dnn.cnn_si.layers, filename = 'BKUP/nnet.param.si') _file2nnet(dnn.dnn_adapt.layers, filename = 'BKUP/nnet.param.adapt') # get the training and validation functions for adaptation network training dnn.params = dnn.dnn_adapt.params # only update the parameters of the i-vector nnet dnn.delta_params = dnn.dnn_adapt.delta_params log('> ... getting the finetuning functions for iVecNN') train_fn, valid_fn = dnn.build_finetune_functions( (cfg_si.train_x, cfg_si.train_y), (cfg_si.valid_x, cfg_si.valid_y), batch_size = cfg_adapt.batch_size) log('> ... learning the adaptation network') cfg = cfg_adapt
train_dataset, train_dataset_args = read_data_args(train_data_spec) valid_dataset, valid_dataset_args = read_data_args(valid_data_spec) # reading data train_sets, train_xy, train_x, train_y = read_dataset(train_dataset, train_dataset_args) valid_sets, valid_xy, valid_x, valid_y = read_dataset(valid_dataset, valid_dataset_args) numpy_rng = numpy.random.RandomState(89677) theano_rng = RandomStreams(numpy_rng.randint(2 ** 30)) log('> ... building the model') # construct the cnn architecture cnn = CNN_SAT(numpy_rng=numpy_rng, theano_rng = theano_rng, batch_size = batch_size, n_outs=n_outs, conv_layer_configs = conv_layer_configs, hidden_layers_sizes = hidden_layers_sizes, ivec_layers_sizes = ivec_layers_sizes, conv_activation = conv_activation, full_activation = full_activation, use_fast = use_fast, update_part = update_part, ivec_dim = ivec_dim) if arguments.has_key('conv_input_file'): _file2cnn(cnn.conv_layers, filename=arguments['conv_input_file']) if arguments.has_key('full_input_file'): _file2nnet(cnn.full_layers, filename = arguments['full_input_file']) if arguments.has_key('ivec_input_file'): _file2nnet(cnn.ivec_layers, set_layer_num = len(ivec_layers_sizes) + 1, filename = arguments['ivec_input_file'], withfinal=False) # get the training, validation and testing function for the model log('> ... getting the finetuning functions') train_fn, valid_fn = cnn.build_finetune_functions( (train_x, train_y), (valid_x, valid_y),