def run_mnist(n_train: int = 4000, n_test: int = 100, visualize: bool = True, n_epochs: int = 5, l_rate: float = 0.7, profile: bool = False): Utilities.delete_previous_output("mnist_images") mnist_features, mnist_labels, mnist_test_features, mnist_test_labels = DataReader.load_mnist( train_limit=n_train, test_limit=n_test) som = SOM(mnist=True, features=mnist_features, labels=mnist_labels, test_features=mnist_test_features, test_labels=mnist_test_labels, n_epochs=n_epochs, initial_radius=5, initial_l_rate=l_rate, radius_decay_func="pow", l_rate_decay_func="pow", n_output_cols=20, n_output_rows=20, display_interval=1 if visualize else -1) pr = cProfile.Profile() if profile: pr.enable() som.run() if profile: pr.disable() pr.print_stats(sort='time') if visualize: Utilities.make_gif(mnist=True)
def run_tsm(city: int, visualize: bool = True, profile: bool = False, n_epochs: int = 400, l_rate: float = 0.39): Utilities.delete_previous_output("tsm_images") cities = DataReader.read_tsm_file(city) norm_cities = cities features = norm_cities[:, 1:] # TSM Hyper Params node_factor = 3 radius_divisor = 1 l_decay = "cur" r_decay = "pow" out_size = len(features) * node_factor init_rad = int(out_size / radius_divisor) som = SOM(mnist=False, features=features, n_epochs=n_epochs, n_output_rows=1, n_output_cols=out_size, initial_radius=init_rad, initial_l_rate=l_rate, radius_decay_func=r_decay, l_rate_decay_func=l_decay, originals=cities[:, 1:], display_interval=10 if visualize else -1) pr = cProfile.Profile() if profile: pr.enable() result = som.run() if profile: pr.disable() pr.print_stats(sort='time') Utilities.store_tsm_result(case=city, epochs=n_epochs, nodes=node_factor, l_rate=l_rate, radius=radius_divisor, l_decay=l_decay, r_decay=r_decay, result=result) Utilities.make_gif(mnist=False) if visualize else NoOp return result