def make_test_params(): cp = MultipleLayersParams() cp.compute_reconstruction = True cp.conv_classes = ConvLayer cp.sp_buffer_size = 6000 cp.sp_batch_size = 4000 cp.learning_rate = 0.02 cp.cluster_boost_threshold = 1000 cp.max_encountered_seqs = 10000 cp.max_frequent_seqs = 1000 cp.seq_length = 4 cp.seq_lookahead = 1 cp.num_conv_layers = 1 cp.n_cluster_centers = 400 cp.rf_size = (8, 8) cp.rf_stride = (8, 8) tp = MultipleLayersParams() tp.n_cluster_centers = 250 tp.sp_buffer_size = 4000 tp.sp_batch_size = 500 tp.learning_rate = 0.2 tp.cluster_boost_threshold = 1000 tp.compute_reconstruction = True common_params = { 'conv_layers_params': cp, 'top_layer_params': tp, 'image_size': SeDatasetSize.SIZE_64, 'class_filter': [1, 2, 3], 'noise_amp': 0.0, 'model_seed': None, 'baseline_seed': None } changing_params = [{ 'conv_layers_params': cp.change(learning_rate=0.1) }, { 'conv_layers_params': cp.change(learning_rate=0.2), 'top_layer_params': tp.change(learning_rate=0.1) }, { 'conv_layers_params': cp.change(learning_rate=0.3) }] params = ExperimentTemplateBase.add_common_params(changing_params, common_params) return params, common_params, changing_params
def test_change_params(): default_params = MultipleLayersParams() default_params.learning_rate = 0.997 default_params.n_cluster_centers = [2, 3] default_params.seq_length = 5 sequence = [{ 'conv_layers_params': default_params.change(n_cluster_centers=[1, 2]) }, { 'conv_layers_params': default_params.change(n_cluster_centers=[1, 2, 3], learning_rate=0.11) }] assert default_params.n_cluster_centers == [2, 3] assert sequence[0]['conv_layers_params'].n_cluster_centers == [1, 2] assert sequence[1]['conv_layers_params'].n_cluster_centers == [1, 2, 3] assert sequence[0]['conv_layers_params'].learning_rate == 0.997 assert sequence[1]['conv_layers_params'].learning_rate == 0.11
def test_empty_change(): a = MultipleLayersParams() a.learning_rate = 0.345 a.n_cluster_centers = [1, 2, 3] b = a.change() assert b.learning_rate == a.learning_rate assert a.n_cluster_centers == b.n_cluster_centers b.learning_rate = 0.1 a.n_cluster_centers = [1, 2] assert b.learning_rate != a.learning_rate assert a.n_cluster_centers != b.n_cluster_centers
def multiple_runs_lr_example(args, debug: bool = False): name = "example_multiple_runs" default_conv = MultipleLayersParams() default_conv.compute_reconstruction = True default_conv.conv_classes = [ConvLayer, SpConvLayer] default_conv.num_conv_layers = 2 default_conv.rf_stride = (8, 8) default_conv.rf_size = (8, 8) tp = MultipleLayersParams() tp.n_cluster_centers = 250 params = [{ 'conv_layers_params': default_conv.change(learning_rate=0.1) }, { 'conv_layers_params': default_conv.change(learning_rate=0.2), 'top_layer_params': tp.change(learning_rate=0.11) }, { 'conv_layers_params': default_conv.change(learning_rate=0.3) }] common_params = { 'top_layer_params': tp, 'image_size': SeDatasetSize.SIZE_64, 'noise_amp': 0.0, 'model_seed': None, 'baseline_seed': None } # merge the params and common params p = ExperimentTemplateBase.add_common_params(params, common_params) run_measurement(name, p, args, debug=debug)
def good_one_layer_config_for_four_objects() -> List[Dict[str, Any]]: """A topology which might achieve 100% SE accuracy on 4 objects""" cp = MultipleLayersParams() cp.compute_reconstruction = False cp.conv_classes = ConvLayer cp.sp_buffer_size = 6000 cp.sp_batch_size = 4000 cp.learning_rate = 0.1 cp.cluster_boost_threshold = 1000 cp.max_encountered_seqs = 2000 cp.max_frequent_seqs = 1000 cp.seq_lookahead = 1 cp.seq_length = 5 cp.n_cluster_centers = 200 cp.rf_size = (8, 8) cp.rf_stride = (8, 8) cp.num_conv_layers = 1 tp = MultipleLayersParams() tp.n_cluster_centers = 150 tp.sp_buffer_size = 3000 tp.sp_batch_size = 2000 tp.learning_rate = 0.15 tp.cluster_boost_threshold = 1000 tp.compute_reconstruction = True cf_easy = [1, 2, 3, 4] size = SeDatasetSize.SIZE_64 size_int = (size.value, size.value, 3) params = [ { 'se_group': {'class_filter': cf_easy, 'image_size': size}, 'model': {'conv_layers_params': cp.change(opp=0.5), 'top_layer_params': tp, 'image_size': size_int} } ] return params
def run_opp(args, num_conv_layers: int, exp_params, top_cc: int = 150): name = f"OPP-influence_num_cc{top_cc}" cp = MultipleLayersParams() cp.compute_reconstruction = False cp.conv_classes = ConvLayer cp.sp_buffer_size = 6000 cp.sp_batch_size = 1500 # original 4000 cp.learning_rate = 0.10001 cp.cluster_boost_threshold = 1000 cp.max_encountered_seqs = 2000 cp.max_frequent_seqs = 1000 cp.seq_lookahead = 1 cp.seq_length = 4 # note: might use also 5 (as in older experiments) if num_conv_layers == 2: cp.n_cluster_centers = [100, 230] cp.rf_size = [(8, 8), (4, 4)] cp.rf_stride = [(8, 8), (1, 1)] cp.num_conv_layers = 2 else: cp.n_cluster_centers = 200 cp.rf_size = (8, 8) cp.rf_stride = (8, 8) cp.num_conv_layers = 1 tp = MultipleLayersParams() tp.n_cluster_centers = top_cc tp.sp_buffer_size = 3000 tp.sp_batch_size = 1500 # tp.learning_rate = 0.15 tp.cluster_boost_threshold = 1000 tp.compute_reconstruction = True cf_easy = [1, 2, 3, 4] size = SeDatasetSize.SIZE_64 size_int = (size.value, size.value, 3) params = [ { 'se_group': {'class_filter': cf_easy, 'image_size': size}, 'model': {'conv_layers_params': cp.change(opp=0), 'top_layer_params': tp, 'image_size': size_int} }, { 'se_group': {'class_filter': cf_easy, 'image_size': size}, 'model': {'conv_layers_params': cp.change(opp=0.05), 'top_layer_params': tp, 'image_size': size_int} }, { 'se_group': {'class_filter': cf_easy, 'image_size': size}, 'model': {'conv_layers_params': cp.change(opp=0.5), 'top_layer_params': tp, 'image_size': size_int} }, { 'se_group': {'class_filter': cf_easy, 'image_size': size}, 'model': {'conv_layers_params': cp.change(opp=0.95), 'top_layer_params': tp, 'image_size': size_int} }, { 'se_group': {'class_filter': cf_easy, 'image_size': size}, 'model': {'conv_layers_params': cp.change(opp=1), 'top_layer_params': tp, 'image_size': size_int} }, # { # 'se_group': {'class_filter': cf_easy, # 'image_size': size}, # 'model': {'conv_layers_params': cp.change(opp=0.3), # 'top_layer_params': tp, # 'image_size': size_int} # }, # { # 'se_group': {'class_filter': cf_easy, # 'image_size': size}, # 'model': {'conv_layers_params': cp.change(opp=0.7), # 'top_layer_params': tp, # 'image_size': size_int} # } ] exp_params.experiment_params.num_layers = num_conv_layers + 1 # needs to be there run_measurement(name, params, args, exp_params)
def run_rf_size(args, exp_params, opp: float = 1.0): name = "rf_size" cp = MultipleLayersParams() cp.compute_reconstruction = False cp.conv_classes = ConvLayer cp.sp_buffer_size = 6000 cp.sp_batch_size = 4000 cp.learning_rate = 0.1 cp.cluster_boost_threshold = 1000 cp.max_encountered_seqs = 2000 cp.max_frequent_seqs = 1000 cp.seq_lookahead = 1 cp.seq_length = 5 cp.opp = opp cp.n_cluster_centers = 200 cp.rf_size = (8, 8) cp.rf_stride = (8, 8) cp.num_conv_layers = 1 tp = MultipleLayersParams() tp.n_cluster_centers = 150 tp.sp_buffer_size = 3000 tp.sp_batch_size = 2000 tp.learning_rate = 0.15 tp.cluster_boost_threshold = 1000 tp.compute_reconstruction = True cf_easy = [1, 2, 3, 4] size = SeDatasetSize.SIZE_64 size_int = (size.value, size.value, 3) params = [ { 'se_group': {'class_filter': cf_easy, 'image_size': size}, 'model': {'conv_layers_params': cp.change(rf_stride=([(8, 8)])), 'top_layer_params': tp, 'image_size': size_int} }, { 'se_group': {'class_filter': cf_easy, 'image_size': size}, 'model': {'conv_layers_params': cp.change(rf_stride=([(4, 4)])), 'top_layer_params': tp, 'image_size': size_int} }, { 'se_group': {'class_filter': cf_easy, 'image_size': size}, 'model': {'conv_layers_params': cp.change(rf_stride=([(2, 2)])), 'top_layer_params': tp, 'image_size': size_int} }, ] exp_params.experiment_params.num_layers = 2 # needs to be there run_measurement(name, params, args, exp_params)
params = [{ 'se_group': { 'class_filter': cf_easy }, 'model': { 'conv_layers_params': cp, 'top_layer_params': tp } }, { 'se_group': { 'class_filter': cf_easy }, 'model': { 'conv_layers_params': cp.change(learning_rate=0.7, sp_batch_size=30, n_cluster_centers=300), 'top_layer_params': tp.change(learning_rate=0.7, sp_batch_size=15, n_cluster_centers=200) } }] # TODO merging common params not supported yeat common_params = [{ 'conv_layers_params': cp, 'top_layer_params': tp, 'image_size': SeDatasetSize.SIZE_64, 'class_filter': cf_easy, 'model_seed': None,