Small fix for PCA plotting in linspace.

This commit is contained in:
Maximilian Zorn
2021-06-15 17:18:40 +02:00
parent 27d763f1fb
commit b40b534d5b
2 changed files with 11 additions and 12 deletions

View File

@ -28,7 +28,7 @@ class SpawnLinspaceExperiment(SpawnExperiment):
'status_post'])
# For every initial net {i} after populating (that is fixpoint after first epoch);
pairwise_net_list = itertools.permutations(self.nets, 2)
pairwise_net_list = itertools.combinations(self.parents, 2)
for net1, net2 in pairwise_net_list:
# We set parent start_time to just before this epoch ended, so plotting is zoomed in. Comment out to
# to see full trajectory (but the clones will be very hard to see).
@ -85,15 +85,11 @@ class SpawnLinspaceExperiment(SpawnExperiment):
df.loc[clone.name] = [net1.name, MAE_pre, MAE_post, MSE_pre, MSE_post, MIM_pre, MIM_post,
self.noise, clone.is_fixpoint]
# Finally take parent net {i} and finish it's training for comparison to clone development.
for _ in range(self.epochs - 1):
for _ in range(self.ST_steps):
net1.self_train(1, self.log_step_size, self.net_learning_rate)
net_weights_after = net1.create_target_weights(net1.input_weight_matrix())
print(f"Parent net's distance to original position."
f"\nMSE(OG,new): {MAE(net1_target_data, net_weights_after)}"
f"\nMAE(OG,new): {MSE(net1_target_data, net_weights_after)}"
f"\nMIM(OG,new): {mean_invariate_manhattan_distance(net1_target_data, net_weights_after)}\n")
for parent in self.parents:
for _ in range(self.epochs - 1):
for _ in range(self.ST_steps):
parent.self_train(1, self.log_step_size, self.net_learning_rate)
self.df = df
@ -110,7 +106,7 @@ if __name__ == '__main__':
ST_log_step_size = 10
# Define number of networks & their architecture
nr_clones = 8
nr_clones = 3
ST_population_size = 3
ST_net_hidden_size = 2
ST_net_learning_rate = 0.04

View File

@ -115,6 +115,8 @@ class SpawnExperiment:
self.noise = noise or 10e-5
print("\nNOISE:", self.noise)
self.parents = []
self.directory = Path(directory)
self.directory.mkdir(parents=True, exist_ok=True)
@ -138,7 +140,8 @@ class SpawnExperiment:
net.self_train(1, self.log_step_size, self.net_learning_rate)
self.nets.append(net)
self.parents.append(net)
def spawn_and_continue(self, number_clones: int = None):
number_clones = number_clones or self.nr_clones