v_dim = len(v_xs[0]) som_a = SOM(5, 5, a_dim, checkpoint_dir=soma_path, n_iterations=100, batch_size=4) som_v = SOM(5, 5, v_dim, checkpoint_dir=somv_path, n_iterations=100, batch_size=4) som_a.train(a_xs) som_v.train(v_xs) som_a.memorize_examples_by_class(a_xs, a_ys) som_v.memorize_examples_by_class(v_xs, v_ys) hebbian_model = HebbianModel(som_a, som_v, a_dim=a_dim, v_dim=v_dim, n_presentations=1, learning_rate=1, n_classes=n_classes, checkpoint_dir=hebbian_path) print('Training...') hebbian_model.train(a_xs, v_xs) print('Evaluating...') accuracy = hebbian_model.evaluate(a_xs, v_xs, a_ys,
for n in range(1, 15): hebbian_model = HebbianModel(som_a, som_v, a_dim=a_dim, v_dim=v_dim, n_presentations=n, checkpoint_dir=hebbian_path, learning_rate=args.lr) a_xs_fold, v_xs_fold, a_ys_fold, v_ys_fold = create_folds(a_xs_train, v_xs_train, a_ys_train, v_ys_train, n_folds=n) # prepare the soms for alternative matching strategies - this is not necessary # if prediction_alg='regular' in hebbian_model.evaluate(...) below som_a.memorize_examples_by_class(a_xs_train, a_ys_train) som_v.memorize_examples_by_class(v_xs_train, v_ys_train) print('Training...') hebbian_model.train(a_xs_fold, v_xs_fold) print('Evaluating...') accuracy_a = hebbian_model.evaluate(a_xs_test, v_xs_test, a_ys_test, v_ys_test, source='a', prediction_alg=args.algo) accuracy_v = hebbian_model.evaluate(a_xs_test, v_xs_test, a_ys_test, v_ys_test, source='v',