def display_space(): domain_mapping, data, dim_names = xml_to_dict("Dataset\\prototypes.xml") domain_mapping, data, dim_names = xml_to_dict( "Dataset\\exemplars.xml", domain_mapping=domain_mapping, data=data, dimension_names=dim_names) domain_mapping, data, dim_names = less_dimensions( domain_mapping=domain_mapping, data=data, dim_names=dim_names) space.init(len(dim_names), domain_mapping, dim_names) concepts = form_supercategories(data) for name, values in zip(concepts, concepts.values()): if not name == 'mammal': family_into_space(name, values, add=True) ci.init(dims=[6, 7, 8]) ''
for category in ordered_dict: print('putting',category,'into space') cuboids=[] domains = {} for example in ordered_dict[category]: if not is_consistent(concepts[example]): print(example,' is inconsistent') else: subdomains={domain:space._domains[domain] for domain in concepts[example] if not domain == 'supercategory'} point=[concepts[example].get(domain,{str(key):float("inf") for key in range(len(space._domains[domain]))}).values() for domain in space._domains] point=[p for dom in point for p in dom] #print(example) #print('point: ',point) cuboids.append(Cuboid([dim if not dim==float('inf') else -dim for dim in point], point, subdomains)) domains.update(subdomains) #print(cuboids[-1]._p_max) #for cuboid in cuboids: #print('cuboid:',cuboid) core=from_cuboids(cuboids,domains) weights=Weights(space._def_dom_weights,space._def_dim_weights) concept=Concept(core, 1.0, 0.5, weights) space.add_concept(category,concept,'orange') #print(space._concepts[concept].membership_of([p if not p==float('-inf') else 0 for p in p_min])) #print(space._concepts[concept].membership_of(p_max)) #print(bear.subset_of(space._concepts[concept])) '''print('amphibian:') print(space._concepts['amphibian'])''' ci.init()
def generate(target='bird', dims=[6, 7, 8], n=None): #read concepts from prototypes and exemplars domain_mapping, data, dim_names = xml_to_dict("Dataset\\prototypes.xml") domain_mapping, data, dim_names = xml_to_dict( "Dataset\\exemplars.xml", domain_mapping=domain_mapping, data=data, dimension_names=dim_names) domain_mapping, data, dim_names = less_dimensions( domain_mapping=domain_mapping, data=data, dim_names=dim_names) space.init(len(dim_names), domain_mapping, dim_names) concepts = form_supercategories(data) testdata = deserialize_testdata('testdata.pkl') if not n: n = random.choice(list(range(len(testdata[target])))) ex = {'target': target, 'point': testdata[target][n], 'n': n} sibblings = [family for family in concepts if not family == target] print(ex) centers = np.array(concepts[target]).T means = [] for dimension in range(len(centers)): means.append( np.average([ value for value in centers[dimension] if not value == float('inf') ])) means = [mean if not np.isnan(mean) else float('inf') for mean in means] aps = evaluate_example(ex, data, concepts, domain_mapping, dim_names, method=two_cubs_PCA, testdata=testdata, criterion=ap_balanced) aps = aps[list(aps.keys())[0]] space.init(len(dim_names), domain_mapping, dim_names) for name, values in zip(concepts, concepts.values()): family_into_space(name, values, add=True) space.add_concept( 'learnt_' + target, one_shot(ex['point'], method=two_cubs_PCA, sibblings=sibblings, name="learnt_" + target, learn_weights=False)) space.add_concept( 'cheated_' + target, one_shot(means, method=two_cubs_PCA, sibblings=sibblings, name=target + 'cheated_' + target, learn_weights=False)) del (space._concepts['mammal']) ci.init(dims=dims) #ap_learnt, ap_naive, ap_known, ap_cheated, ap_supercheated print('learnt', aps[0]) print('small', aps[1]) print('big', aps[2]) print('known', aps[3]) print('cheated', aps[4])